2013-04-03 71 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