Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 当多个级别接受\u嵌套的\u属性\u时,Rails 4个强参数_Ruby On Rails 4_Nested Attributes_Strong Parameters - Fatal编程技术网

Ruby on rails 4 当多个级别接受\u嵌套的\u属性\u时,Rails 4个强参数

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"=>

当我试图保存具有多个级别的accepts\u nested\u attribetus\u的模型时,我遇到了一个问题

我的用例是有一个用户页面,用户可以在其中创建多个问题,每个问题也可以创建多个答案

由于提交页面上可能有多个问题,因此提交时用户的参数哈希如下所示:

{"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上也有同样的问题