我有两个模型,Car
和Manufacturer
。这些模型很简单:Rails - 嵌套模型:不能批量分配受保护的属性
class Car < ActiveRecord::Base
attr_accessible :manufacturer_id, :car_name, :descr, ...
belongs_to :manufacturer
...
end
和
class Manufacturer < ActiveRecord::Base
attr_accessible :name, :url
has_many :cars
...
end
与表单输入数据的视图(views/cars/_form.html.haml
):
= form_for @car do |f|
.field
= f.label :car_name
= f.text_field :car_name
...
= f.fields_for @manufacturer do |m|
.field
= m.label :name
= m.text_field :name
...
当我发送的形式保存输入的信息(这去CarsController
),我得到这个错误:
Can't mass-assign protected attributes: manufacturer
我已经尽力了
accepts_nested_attributes_for :manufacturer
添加到Car
模型,但它并没有帮助我......
问题出在哪里?
编辑: 如何我在控制器中保存数据:
@manufacturer = Manufacturer.new(params[:car][:manufacturer])
@car = @manufacturer.cars.build(params[:car])
EDIT2:从日志 数据:
{"utf8"=>"✓",
"_method"=>"put",
"authenticity_token"=>"4vcF5NV8D91DkxpCsqCzfbf05sOYsm7ssxZvPa3+kXo=",
"car"=>{"car_name"=>"...",
"descr"=>"...",
"categroy_ids"=>["2",
"3",
"4"],
"manufacturer"=>{"name"=>"Company",
"url"=>"..."}},
"commit"=>"Save",
"id"=>"..."}
谢谢
你的'params [:car]'包含'制造商'属性..试试这个:'@manufacturer = Manufacturer.new(params [:car] .delete(:manufacturer)); @car = @ manufacturer.cars.build(params [:car])' – codeit 2013-03-27 16:51:55
虽然@codeit是现货,但您可能需要查看'acceptersted_attributes'。 – Matt 2013-03-27 16:56:29
codeit - 谢谢,但 - 如何更新'更新'行动?保存一个新项目运行良好,但在更新数据时得到相同的错误... – user984621 2013-03-27 17:24:06