Formularz szyny z wieloma zagnieżdżonymi modelami powoduje problemy z grupami radiowymi

Mam problem z zagnieżdżonymi formularzami modeli, które zawierają przyciski opcji, gdy mam wiele modeli, wszystkie przyciski opcji są traktowane jako należące do tej samej grupy.

Mój model zawiera relację has_many w następujący sposób:

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

Class OrderItem < ActiveRecord::Base
    belongs_to :order
end

Mam wtedy częściowy, który tworzyOrderItem formularz modelu za pomocą

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

W tym formularzu znajduje się grupa przycisków radiowych utworzonych wewnątrz pętli for

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

Działa to dobrze, gdy jest tylko jedno dziecko, jednak gdy tylko wstawię wiele dzieci, wszystkie przyciski radiowe należą do tej samej grupy, ponieważ wszystkie mają ten sam atrybutname="order[order_items_attributes][][colour_id]". To wszystko w nowej formie modelu, więc nie mogę używać indeksów tablicowych (name="order[order_items_attributes][0][colour_id]") gdy Railsy dają błądexpected Hash (got Array) for param 'order_items_attributes' Myliłem się co do tej ostatniej części, błąd polegał na tym, że miksowałem indeksowane i nieindeksowane atrybuty nazw. Dodanie wartości indeksu było kluczem do rozwiązania tego problemu.

Oto zawartośćparams[:order] hash, gdy obecny jest tylko jeden model zagnieżdżony:

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

A kiedy obecne są dwa modele zagnieżdżone:

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

Jak widać tylko pierwszyorder_item ma atrybut colour_id. Dzieje się tak niezależnie od modelu, do którego należał wybrany przycisk radiowy (co ma sens).

Jak mogę renderować przyciski radiowe w taki sposób, aby tworzył osobną grupę dla każdego modelu potomnego?

questionAnswers(1)

yourAnswerToTheQuestion