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.

我错在哪里以及如何使用它在三个表中保存价值。

4

1 回答 1

0

您似乎忘记在模型中添加这段代码ItemCategory

attr_accessible :item_companies_attributes

这将允许您设置这些属性。

于 2013-03-31T17:55:01.737 回答