我有一個包含單選按鈕的嵌套模型表單的問題,當我有多個模型時,所有單選按鈕被視爲在同一組中。多個嵌套模型的導軌形式導致廣播組的問題
我的模型包含這樣一個的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
我然後具有部分創建使用
<% fields_for "order[order_items_attributes][]", order_item do |f| %>
而包含在此形式中的OrderItem
模型的形式是一組單選按鈕的創建在for循環內
radio_button_tag "order[order_items_attributes][][colour_id]", "#{colour.id}"
T當只有一個孩子時,他的作品很好,但是當我插入多個孩子時,所有單選按鈕屬於同一個組,因爲它們都具有相同的屬性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屬性。無論所選單選按鈕屬於哪個模型(這是有道理的),都會發生這種情況。
如何渲染單選按鈕,以便爲每個子模型創建一個單獨的組?
如果您可以粘貼params [:order]哈希值的內容對於僅存在1個嵌套order_item(即工作情況)的情況以及對於存在多於1個嵌套order_item的情況將是有幫助的(即它不起作用的情況)。對於這兩個示例,在粘貼到堆棧溢出之前,通過漂亮打印運行params [:order]散列。 – nelstrom 2009-10-16 15:09:13