La forma de los rieles con múltiples modelos anidados causa problemas con los grupos de radio

Tengo un problema con los formularios de modelos anidados que contienen botones de opción, cuando tengo varios modelos, todos los botones de opción se consideran como si estuvieran en el mismo grupo.

Mi modelo contiene una relación has_many como esta:

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

Class OrderItem < ActiveRecord::Base
    belongs_to :order
end

Entonces tengo un parcial que crea elOrderItem formulario modelo utilizando

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

Y dentro de este formulario hay un grupo de botones de radio creados dentro de un bucle for con

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

Esto funciona bien cuando solo hay un niño, sin embargo, en cuanto inserto varios niños, todos los botones de radio pertenecen al mismo grupo, ya que todos tienen el mismo atributo.name="order[order_items_attributes][][colour_id]". Todo esto está en un nuevo formulario de modelo, por lo que no puedo usar índices de matriz (name="order[order_items_attributes][0][colour_id]") como Rails da el errorexpected Hash (got Array) for param 'order_items_attributes' Me equivoqué en esa última parte, el error fue porque estaba mezclando atributos de nombre indexados y no indexados. Agregar valores de índice fue la clave para resolver esto.

Aquí está el contenido de laparams[:order] hash cuando solo un modelo anidado está presente:

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

Y cuando están presentes dos modelos anidados:

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

Como puedes ver solo el primeroorder_item tiene su atributo colour_id. Esto ocurre independientemente del modelo al que pertenezca el botón de radio seleccionado (lo que tiene sentido).

¿Cómo puedo hacer que los botones de opción generen un grupo separado para cada modelo secundario?

Respuestas a la pregunta(1)

Su respuesta a la pregunta