Rails 5 保存时不允许的参数

Rails 5 Unpermitted Parameter Upon Save

我正在使用两个模型 SubmissionTagSubmission has_one :tag。在我的控制器中,我设置了 submission_params 如下:

params.require(:submission).permit(:domain, tag_attributes:[:tag_text, :notes])

但是,我收到错误消息:Unpermitted parameter: tag

来自我的日志:

Parameters: {"utf8"=>"✓", "authenticity_token"=>"BEJZXOERC3cGSZFlAL91kRJgR+YFcHd6+yMYilDyu/NyN1YviwahKwrifAQfWMdu53/NYCnOVD4NHNXSZmPk7Q==", "submission"=>{"domain"=>"test", "tag"=>{"tag_text"=>"test tag", "notes"=>"test"}}, "commit"=>"Submit"}

也许我只是生疏了,忽略了一些东西,或者 rails5 有处理强参数的新技巧吗?提前致谢!

你必须发送 tag_attributes 参数而不是 tag - 看你的日志输出

如果这是

accepts_nested_attributes :tag

这是您允许的方式:

# :_destroy is for being able to delete the nested tag
params
  .require(:submission)
  .permit(:domain, tag_attributes: %i(id submission_id tag_text notes _destroy))