Formulário de trilhos com vários modelos aninhados causa problemas com grupos de rádio

Eu estou tendo um problema com formulários de modelo aninhado que contêm botões de opção, quando eu tenho vários modelos, todos os botões de opção são tratados como estando no mesmo grupo.

Meu modelo contém um relacionamento has_many como este:

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

Class OrderItem < ActiveRecord::Base
    belongs_to :order
end

Eu tenho então uma parcial que cria oOrderItem modelo de formulário usando

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

E contido neste formulário é um grupo de botões de rádio criados dentro de um loop for com

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

Isso funciona bem quando há apenas um filho, no entanto, assim que eu insiro vários filhos, todos os botões de rádio pertencem ao mesmo grupo, pois todos têm o mesmo atributo.name="order[order_items_attributes][][colour_id]". Isso tudo está em um novo formulário de modelo, portanto não posso usar índices de array (name="order[order_items_attributes][0][colour_id]") como o Rails dá o erroexpected Hash (got Array) for param 'order_items_attributes' Eu estava errado sobre a última parte, erro foi porque eu estava misturando atributos de nome indexados e não indexados. A adição de valores de índice foi a chave para resolver isso.

Aqui está o conteúdo doparams[:order] hash quando apenas um modelo aninhado está presente:

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

E quando dois modelos aninhados estão presentes:

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

Como você pode ver apenas o primeiroorder_item tem seu atributo colour_id. Isso ocorre independentemente de qual modelo o botão de opção selecionado pertencia (o que faz sentido).

Como posso processar os botões de opção de forma que ele crie um grupo separado para cada modelo filho?

questionAnswers(1)

yourAnswerToTheQuestion