次の場合に、複数のネストされた属性のフォームとアクションを作成する方法:
ラインアイテム:
has_many :item_options, :dependent => :destroy
has_many :product_options, :through => :item_options
ProductOption:
belongs_to :product
belongs_to :option
has_many :item_options
has_many :line_items, :through => :item_options
ItemOption:
attr_accessible :line_item_id, :product_option_id
belongs_to :line_item, :foreign_key => "line_item_id"
belongs_to :product_option,:foreign_key => "product_option_id"
新しいLineItemを作成するときは、新しいItemOptionを作成する必要があります。これは私のフォームです:
<%= form_for(LineItem.new) do |f| %>
<%= f.hidden_field :product_id, value: @product.id %>
<%= f.fields_for :item_options do |io| %>
<% @product.options.uniq.each do |o| %>
<%= o.name %>:
<%= io.collection_select :product_option_id, o.product_options.where(:product_id => @product.id), :id, :value %>
<% end %>
<%= f.submit %>
<% end %>
[カートに追加]をクリックすると、次のようになります。
ItemOption(#70296453751440)が必要です、配列を取得しました(#70296430421140)
Accepts_nested_attributes_for:item_optionsをLineItemに追加すると、私の選択は表示されません:(
と
<%= select_tag "product_option_id", options_from_collection_for_select(o.product_options.where(:product_id => @product.id), :id, :value) %>
#item_options not created:
Parameters: {"utf8"=>"✓", "authenticity_token"=>"/WM5/MqPn1yCxjKWoJQmjfko2pR4RiYV0S2KeTTpA3w=", "line_item"=>{"product_id"=>"1"}, "product_option_id"=>"5", "commit"=>"add"}
そして最後に、次のようなアクションを作成しました。
@line_item = LineItem.new(params[:line_item])
@line_item.item_options.build
....
私はどこが間違っていますか?:(私は完全に混乱しています。ps。同様の質問Rails3.2has_manyフォームの送信 これはフォームです: