“无法使用嵌套的受保护模型批量分配受保护的属性”

我有时间试图让这个嵌套模型正常工作。 我已经尝试了所有方式的复数/单数,完全删除了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提交给模型