“无法使用嵌套的受保护模型批量分配受保护的属性”
我有时间试图让这个嵌套模型正常工作。 我已经尝试了所有方式的复数/单数,完全删除了attr_accessible,谁知道还有什么。
restaurant.rb:
# == RESTAURANT MODEL # # Table name: restaurants # # id :integer not null, primary key # name :string(255) # created_at :datetime not null # updated_at :datetime not null # class Restaurant :jobs has_many :positions accepts_nested_attributes_for :jobs, :allow_destroy => true validates :name, presence: true end
job.rb:
# == JOB MODEL # # Table name: jobs # # id :integer not null, primary key # restaurant_id :integer # shortname :string(255) # user_id :integer # created_at :datetime not null # updated_at :datetime not null # class Job < ActiveRecord::Base attr_accessible :restaurant_id, :shortname, :user_id belongs_to :user belongs_to :restaurant has_many :shifts validates :name, presence: false end
restaurants_controller.rb:
class RestaurantsController < ApplicationController before_filter :logged_in, only: [:new_restaurant] def new @restaurant = Restaurant.new @user = current_user end def create @restaurant = Restaurant.new(params[:restaurant]) if @restaurant.save flash[:success] = "Restaurant created." redirect_to welcome_path end end end
new.html.erb:
输出参数:
{"utf8"=>"✓", "authenticity_token"=>"DjYvwkJeUhO06ds7bqshHsctS1M/Dth08rLlP2yQ7O0=", "restaurant"=>{"name"=>"The Pink Door", "job"=>{"shortname"=>"PD"}}, "commit"=>"Done"}
我收到的错误是:
ActiveModel::MassAssignmentSecurity::Error in RestaurantsController#create Cant mass-assign protected attributes: job Rails.root: /home/johnnyfive/Dropbox/Projects/sa Application Trace | Framework Trace | Full Trace app/controllers/restaurants_controller.rb:11:in `new' app/controllers/restaurants_controller.rb:11:in `create'
任何人都有任何线索如何让这个工作? 谢谢!
在restaurant.rb:
它应该是attr_accessible :name, :jobs_attributes
而不是attr_accessible :name, :job_attributes
关于你的最后评论:你可以在你的工作表单中提交user_id,这应该将user_id提交给模型