ActiveModel::MassAssignmentSecurity::Error 嵌套属性 [英] ActiveModel::MassAssignmentSecurity::Error with nested attributes

查看:41
本文介绍了ActiveModel::MassAssignmentSecurity::Error 嵌套属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在我的 Rails 应用中创建一对多关系.

Hi im trying to create a relation one-to-many in my rails app.

首先我创建我的模型

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

然后我创建了我的控制器

Then i created my controller

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 页面:

After this i created my .html.erb pages:

_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" %>

然后,当我提交表单时出现此错误:

then, when i submit the form this error appears:

ActiveModel::MassAssignmentSecurity::Error in ProdutosController#create

Can't mass-assign protected attributes: precos_attributes

有人知道吗?

推荐答案

只需更改您的模型:

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

  has_many :precos
  accepts_nested_attributes_for :precos
end

这篇关于ActiveModel::MassAssignmentSecurity::Error 嵌套属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆