[英]Rails - nested model: Can't mass-assign protected attributes
我有兩個型號, Car
和Manufacturer
。 這些模型非常簡單:
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
)時,我收到此錯誤:
無法批量分配受保護的屬性:制造商
我試過添加
accepts_nested_attributes_for:制造商
到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"=>"..."}
謝謝
你能通過汽車節省制造商嗎?
添加到汽車模型:
accepts_nested_attributes_for :manufacturer
添加manufacturer_attributes除其他汽車屬性attr_accessible在汽車模型電話:
attr_accessible :manufacturer_attributes, :car_name, :descr, ...
將它保存在您的控制器操作(標准方式)中,如下所示:
def create
@car = Car.new(params[:car])
if @car.save
redirect_to @car
else
render :new
end
end
確保您在manufacturer_attributes散列中發送的所有內容都是白色,並在制造商模型中使用attr_accessible調用(:name,:url等...)。
你需要添加
attr_accessible:manufacturer_id,:car_name,:descr,:manufacturer_attributtes
在汽車模型。 不要在車載控制器的保存方法中使用@manufacturer來處理它。
您應該閱讀: Active Record Nested Attributes
我希望它有所幫助。
你的參數[:car]包含制造商屬性..試試這個:
@manufacturer = Manufacturer.new(params[:car].delete(:manufacturer))
@car = @manufacturer.cars.build(params[:car])
您沒有通過這種方式使用has_many
關系。 你可以通過這個
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.