Форма Rails с несколькими вложенными моделями вызывает проблемы с радиогруппами

У меня проблема с вложенными модельными формами, которые содержат переключатели, когда у меня несколько моделей, все переключатели рассматриваются как находящиеся в одной группе.

Моя модель содержит отношение has_many, например:

class Order < ActiveRecord::Base
    has_many :order_items
    accepts_nested_attributes_for :order_items
end

Class OrderItem < ActiveRecord::Base
    belongs_to :order
end

У меня тогда есть частичное, которое создаетOrderItem модель с использованием формы

<% fields_for "order[order_items_attributes][]", order_item do |f| %>

В этой форме содержится группа переключателей, созданных внутри цикла for с

radio_button_tag "order[order_items_attributes][][colour_id]", "#{colour.id}"

Это прекрасно работает, когда есть только один дочерний элемент, однако, как только я вставляю несколько дочерних элементов, все переключатели принадлежат к одной группе, поскольку все они имеют одинаковый атрибутname="order[order_items_attributes][][colour_id]", Это все в новой форме модели, поэтому я не могу использовать индексы массива (name="order[order_items_attributes][0][colour_id]") как Rails выдает ошибкуexpected Hash (got Array) for param 'order_items_attributes' В последней части я ошибался, ошибка была из-за того, что я смешивал индексированные и неиндексированные атрибуты имен. Добавление значений индекса было ключом к решению этой проблемы.

Вот содержимоеparams[:order] хэш, когда присутствует только одна вложенная модель:

{"order_items_attributes"=>
  [{"size"=>"Small",
    "colour_id"=>"4"],
 "first_name"=>"sdf",
 "last_name"=>"sdf",
 "email"=>"[email protected]"}

И когда присутствуют две вложенные модели:

{"order_items_attributes"=>
  [{"size"=>"Small",
    "colour_id"=>"4"},
   {"size"=>"Small"}],
 "first_name"=>"sdf",
 "last_name"=>"sdf",
 "email"=>"[email protected]"}

Как видно только первоеorder_item имеет свой атрибут colour_id. Это происходит независимо от того, к какой модели принадлежал выбранный переключатель (что имеет смысл).

Как сделать так, чтобы переключатели создавали отдельную группу для каждой дочерней модели?

Ответы на вопрос(1)

Ваш ответ на вопрос