В настоящее время я просматриваю наше приложение Rails для исправления ошибок. Как полный новичок эта часть:Как установить имя для выбора в Rails?
<%= fields_for live_result_log , :index =>live_result_log.id do |field|%>
<%= field.select(:control_reason_id, ControlReason.where(:delete_flag=>0).collect{|i|[i.reason_name, i.id]},
{:include_blank => false,:selected => live_result_log.control_reason_id}, :class => "select_result") %>
</td>
дает мне головные боли. Вариант использования состоит в том, что должно быть несколько записей журнала результатов в реальном времени, и на этой странице создается несколько объектов выбора в зависимости от того, как могут записываться записи журнала. Однако, используя поджигатель я был в состоянии получить информацию POST (отформатирован для удобства чтения):
&live_result_log%5Bcontrol_reason_id%5D=1
&live_result_log%5Bcontrol_reason_id%5D=1
&live_result_log%5Bcontrol_reason_id%5D=1
&live_result_log%5Bcontrol_reason_id%5D=1
&live_result_log%5Bcontrol_reason_id%5D=1
&live_result_log%5Bcontrol_reason_id%5D=4
&live_result_log%5Bcontrol_reason_id%5D=1
&live_result_log%5Bcontrol_reason_id%5D=1
&live_result_log%5Bcontrol_reason_id%5D=1
&live_result_log%5Bcontrol_reason_id%5D=1
&live_result_log%5Bcontrol_reason_id%5D=1
Как вы можете видеть, POST парам в основном идентичны, поэтому, когда это представляется, то control_reason_id становится таким же, для всех записей независимо от того, что я выбираю, в зависимости от последнего элемента. Как я могу выбрать разные имена, чтобы я мог различать их?
контроллер для регулирования доступа данных с использованием этого:
@send_datas = params[:live_result_log][:control_reason_id]
live_result_log представляет собой модель.
EDIT: Так что сюжет сгущается. В одной версии приложения, версия рельсов 3.0.9, и единственное отличие состоит в этой части:
@send_datas = params[:live_result_log]["#{s}"][:control_reason_id]
и она отлично работает. Данные POST становятся примерно такими:
&live_result_log%5B7321%5D%5Bcontrol_reason_id%5D=1
&live_result_log%5B7322%5D%5Bcontrol_reason_id%5D=3
&live_result_log%5B7323%5D%5Bcontrol_reason_id%5D=5
, так что есть дополнительная информация, позволяющая различать параметры.
Версия Rails, используемая для проблемной версии, - 3.2.0.
Протестировано. Результат тот же. До сих пор нет различий между выбранными объектами. Хороший рефакторинг, хотя я могу его сохранить. – IBG