Ruby on rails 4 当多个级别接受\u嵌套的\u属性\u时,Rails 4个强参数
当我试图保存具有多个级别的accepts\u nested\u attribetus\u的模型时,我遇到了一个问题 我的用例是有一个用户页面,用户可以在其中创建多个问题,每个问题也可以创建多个答案 由于提交页面上可能有多个问题,因此提交时用户的参数哈希如下所示:Ruby on rails 4 当多个级别接受\u嵌套的\u属性\u时,Rails 4个强参数,ruby-on-rails-4,nested-attributes,strong-parameters,Ruby On Rails 4,Nested Attributes,Strong Parameters,当我试图保存具有多个级别的accepts\u nested\u attribetus\u的模型时,我遇到了一个问题 我的用例是有一个用户页面,用户可以在其中创建多个问题,每个问题也可以创建多个答案 由于提交页面上可能有多个问题,因此提交时用户的参数哈希如下所示: {"user"=>{"questions_attributes"=>{"0"=>{"desc"=>"question", "answers_attributes"=>{"0"=>{"ans"=>
{"user"=>{"questions_attributes"=>{"0"=>{"desc"=>"question", "answers_attributes"=>{"0"=>{"ans"=>""}}}}}}
因此,我得到的错误是“unpermittedparameter:0”。如何正确设置强参数权限,以便正确保存所有模型?我可以循环回答这些问题,并单独保存每个问题,这是可行的,但我希望有一种更干净的方法来解决
user.rb
has_many :questions
accepts_nested_attributes_for :questions
问题.rb
belongs_to :user
has_many :answers
accepts_nested_attributes_for :answers
答案.rb
belongs_to :question
用户\u 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
试试这个
def update
user = User.find_by_id params[:id]
user.update(user_params)
end
def user_params
params.require(:user).permit(:desc, :questions_attributes => [:question, answers_attributes => [:ans]])
end
它不起作用了。总是说:ans属性是未经许可的。有人找到了让它工作的方法吗?我在Rails 5上也有同样的问题