【问题标题】:Rails 5 Unpermitted Parameter Upon SaveRails 5 保存时不允许的参数
【发布时间】:2016-12-12 12:25:13
【问题描述】:

我正在使用两个模型 SubmissionTagSubmissionhas_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 有处理强参数的新技巧?提前致谢!

【问题讨论】:

  • params.require(:submission).permit(:domain, { tag: [:tag_text, :notes] })
  • *_attributes 是正确的形式,因为您将嵌套属性传递给模型
  • @mr_sudaca 感谢您的回复;当我尝试这样做时,我得到了错误AssociationTypeMismatch
  • params.require(:submission).permit(:domain, { tag_attributes: [[:tag_text, :notes]] })怎么样
  • @mr_sudaca 不,unpermitted parameter

标签: ruby-on-rails ruby-on-rails-5 strong-parameters


【解决方案1】:

如果是这样

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))

【讨论】:

    【解决方案2】:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多