2013-04-03 67 views
0

嗨,即時通訊嘗試在我的Rails應用程序中創建一對多的關係。ActiveModel :: MassAssignmentSecurity ::嵌套屬性錯誤

拳創建我的模型

class Produto < ActiveRecord::Base 
    attr_accessible :compra, :descricao, :estoque, :venda 

    has_many :precos 
    accepts_nested_attributes_for :precos 
end 

class Preco < ActiveRecord::Base 
    attr_accessible :compra_decimal, :produto_id, :venda_decimal 

    belongs_to :produto 
end 

然後,我創建我的控制器

class ProdutosController < ApplicationController 
    def new 
    @produto = Produto.new 
    @produto.precos.build 
    end 

    def create 
    @produto = Produto.new(params[:produto]) 

    if @produto.save? 
     redirect_to produtos_path 
    end 
    end 
end 

這個我創造了我.html.erb張後:

_form

<%= form_for @produto do |f| %> 
<p> 
    <%= f.label :descricao %><br/> 
    <%= f.text_field :descricao %> 
</p> 
<p> 
    <%= f.label :compra %><br/> 
    <%= f.text_field :compra %> 
</p> 
<p> 
    <%= f.label :venda %><br/> 
    <%= f.text_field :venda %> 
</p> 
<p> 
    <%= f.label :estoque %><br/> 
    <%= f.text_field :estoque %> 
</p> 
<%= f.fields_for :precos do |builder| %> 
<%= render "precos", :f => builder %> 
<% end %> 
<p><%= f.submit %></p> 
<% end %> 

_precos

<p> 
    <%= f.label :venda_decimal %><br/> 
    <%= f.text_field :venda_decimal %> 
</p> 
<p> 
    <%= f.label :compra_decimal %><br/> 
    <%= f.text_field :compra_decimal %> 
</p> 

<%= render "form" %> 

然後,當我提交表單出現此錯誤:

ActiveModel::MassAssignmentSecurity::Error in ProdutosController#create 

Can't mass-assign protected attributes: precos_attributes 

沒有任何人有任何想法?

回答

2

只要改變你的模型:

class Produto < ActiveRecord::Base 
    attr_accessible :compra, :descricao, :estoque, :venda, :precos_attributes 

    has_many :precos 
    accepts_nested_attributes_for :precos 
end 
+0

太感謝你了! – basmoura 2013-04-04 01:13:12