【发布时间】:2015-08-29 15:26:49
【问题描述】:
当我尝试保存具有多个级别的accepts_nested_attribetus_for 的模型时遇到问题。
我的用例是有一个用户页面,用户可以在其中创建多个问题,也可以为每个问题创建多个答案。
发生的情况是,由于提交页面上可能有多个问题,用户的参数哈希在提交时看起来像:
{"user"=>{"questions_attributes"=>{"0"=>{"desc"=>"question", "answers_attributes"=>{"0"=>{"ans"=>""}}}}}}
因此,我得到的错误是“Unpermitted parameter: 0”。如何正确设置强参数权限,以便正确保存所有模型?我可以循环浏览这些问题,并单独保存每个问题,这很有效,但我希望有一种更简洁的方法。
用户.rb
has_many :questions
accepts_nested_attributes_for :questions
问题.rb
belongs_to :user
has_many :answers
accepts_nested_attributes_for :answers
answer.rb
belongs_to :question
users_controller.rb
def update
user = User.find_by_id params[:id]
user.questions.create question_params(params[:user])
end
def question_params(params)
params.require(:question_attributes).permit(:desc, {:answers_attributes => [:ans]}
end
【问题讨论】:
标签: ruby-on-rails-4 nested-attributes strong-parameters