0

私の見解は

<h3> Register New Items </h3>
<div class="row">
<div class="span2 offset4">
    <%= nested_form_for @item_category, :url => items_path, :method => :post, :html => { :class => "item_category"} do |f| %>
        <div><%= f.label :item_name %>
        <%= f.text_field :item_name %></div>
        </br>

        <div>
            <%= f.fields_for :item_companies do |f| %>
                  <%= f.label :company_name %>
                <%= f.text_field :company_name %>

     </div>
     </br>

     <%= f.fields_for :item_weights do |f| %>
            <div>
                    <%= f.label :weight %>
                    <%= f.text_field :weight %>
            </div>
            </br>
            <div>
                    <%= f.label :price %>
                    <%= f.text_field :price %>
            </div>
    <%end%>
    <%end%>

    <div><%= f.submit "Submit" %></div>
    <% end %>
</div>

とコントローラ

def new
  @item_category = ItemCategory.new
  item_company = @item_category.item_companies.build
  item_company.item_weights.build 
end

そして、デバッガーを実際に適用し、create値を見て params[:item_category]、これが生成されたとき{"item_name"=>"iname", "item_companies_attributes"=>{"0"=>{"company_name"=>"cname", "item_weights_attributes"=>{"0"=>{"weight"=>"20kg", "price"=>"100"}}}}}

ItemCategory.new(params[:item_category])

発生したエラー

ActiveModel::MassAssignmentSecurity::Error Exception: Can't mass-assign protected attributes: item_companies_attributes.

どこが間違っているのか、これを使用して 3 つのテーブルに値を保存する方法。

4

1 に答える 1

0

モデルにこのコードを追加するのを忘れたようですItemCategory:

attr_accessible :item_companies_attributes

これにより、これらの属性を設定できます。

于 2013-03-31T17:55:01.737 に答える