Проблема заключается в том, что ваши check_box_tags неправильно определяют, где в хэше params они должны помещаться.
Rails, как правило, упрощает раскрой всех вложений, без необходимости прибегать к жестким идентификаторам полей кодирования. К сожалению, эти удобные методы не работают, когда вы пытаетесь использовать массив флажков. Из-за флажок получил относительно значений по умолчанию и массивов.
Использование check_box_tag позволяет избежать ошибок, но требует от вас заполнения информации, обычно предоставляемой объектом формы.
Мне кажется, что все ваши поля из нескольких частей добавляются в один и тот же массив параметров. Rails обрабатывает дублирующиеся параметры в массиве, чтобы запустить другой индекс.
Внимательно посмотрите на полученный источник, чтобы использовать его в качестве подсказки для получения правильного результата.
Код, который вы разместили, требовал слишком много усилий, чтобы добраться до точки, где я мог бы поиграть с ним. Поэтому я не могу гарантировать, что это сработает. Кроме того, без публикации кода контроллера невозможно определить причину возникновения ошибок.
Независимо от решения вы хотите добавить индекс к параметрам для каждого частичного.
Вы хотите сделать что-то подобное. Где индекс является уникальным значением для каждого частичного.
- unless @stands.empty?
%tr#show_stands.contentText
%td{:width => "27%", :valign => "top"}
Select Stand For Ownership
%td{:width => "15%", :valign => "top"}
= collection_select "owned_stands[#{index}][]", "stand_id", @stands, :id, :erf_no_rr_no, options ={:prompt =>"Please select stand..."}, {:class => 'dropdownSelect'}
%td{:valign => "top"}
= check_box_tag "owned_stands[#{index}][owner_comm_list]"
Add to Owners Communication list
= check_box_tag "owned_stands[#{index}][resident_comm_list]"
Add to Residents Communication list
Он будет выдавать хэш параметров следующим образом:
За один стенд с обоими флажками:
params["owned_stands"] =
{"0" =>
{"stand_id" => 1, "owner_comm_list" => 1, "resident_comm_list" => 1}
}
Для двух стендов с обоими флажками:
prams[owned_stands] =
{
"0" =>
{"stand_id" => 1, "owner_comm_list" => 1, "resident_comm_list" => 1},
"1" =>
{"stand_id" => 2, "owner_comm_list" => 1, "resident_comm_list" => 1}
}
Возможно, вы захотите взглянуть на accepts_nested_attributes_for и вложенные поля_ для использования. Они упрощают подобные вещи как в представлении, так и в контроллере, но все же становятся добычей для флажка.