Ruby on rails 4 Rails 4中双嵌套模型的不允许参数
我是Rails新手,并基于此构建了一些东西,但它需要一些小的更新才能与Rails 4的强大参数兼容: 我在这里根据类似帖子列出了调查参数、问题和答案: 我检查了数据库,但数据不在那里,在日志中发现了错误。第一组嵌套数据(问题)在那里并起作用,只有第二组不起作用。我也有:身份证在那里,人们说你也需要 据我所知,每个父级都需要将其要修改的直接嵌套属性列为白名单。我使用了完全相同的代码来解决问题,但是答案并没有被列入白名单,即使我已经在问题中这样做了 欢迎指点。我似乎找不到任何双重嵌套的示例 更新:我通过反复试验解决了这个问题。Ruby on rails 4 Rails 4中双嵌套模型的不允许参数,ruby-on-rails-4,strong-parameters,Ruby On Rails 4,Strong Parameters,我是Rails新手,并基于此构建了一些东西,但它需要一些小的更新才能与Rails 4的强大参数兼容: 我在这里根据类似帖子列出了调查参数、问题和答案: 我检查了数据库,但数据不在那里,在日志中发现了错误。第一组嵌套数据(问题)在那里并起作用,只有第二组不起作用。我也有:身份证在那里,人们说你也需要 据我所知,每个父级都需要将其要修改的直接嵌套属性列为白名单。我使用了完全相同的代码来解决问题,但是答案并没有被列入白名单,即使我已经在问题中这样做了 欢迎指点。我似乎找不到任何双重嵌套的示例 更新
我发现解决办法是白名单需要匹配属性的嵌套。因此,为了解决上述问题,我更改了以下内容:
class SurveysController < ApplicationController
def survey_params
params.require(:survey).permit(:name, questions_attributes: [:id, :survey_id, :content])
end
class SurveysController < ApplicationController
def survey_params
params.require(:survey).permit(:name, questions_attributes: [:id, :survey_id, :content])
end
class SurveysController
为此:
class SurveysController < ApplicationController
def survey_params
params.require(:survey).permit(:name, questions_attributes: [:id, :survey_id, :content, answers_attributes: [:id, :question_id, :content]])
end
class SurveysController < ApplicationController
def survey_params
params.require(:survey).permit(:name, questions_attributes: [:id, :survey_id, :content, answers_attributes: [:id, :question_id, :content]])
end
class SurveysController
例如,只需复制答案属性的白名单,并在问题属性的结束“]”之前插入白名单。我发现解决办法是白名单需要与属性嵌套匹配。因此,为了解决上述问题,我更改了以下内容:
class SurveysController < ApplicationController
def survey_params
params.require(:survey).permit(:name, questions_attributes: [:id, :survey_id, :content])
end
class SurveysController < ApplicationController
def survey_params
params.require(:survey).permit(:name, questions_attributes: [:id, :survey_id, :content])
end
class SurveysController
为此:
class SurveysController < ApplicationController
def survey_params
params.require(:survey).permit(:name, questions_attributes: [:id, :survey_id, :content, answers_attributes: [:id, :question_id, :content]])
end
class SurveysController < ApplicationController
def survey_params
params.require(:survey).permit(:name, questions_attributes: [:id, :survey_id, :content, answers_attributes: [:id, :question_id, :content]])
end
class SurveysController
例如,只需复制答案属性的白名单,并在问题属性的结束“]”之前插入白名单
希望这能帮助其他人解决同样的问题。这应该在文档中。不知道为什么有人否决了你。