【问题标题】:Rails strong parameters: permitting nested attributesRails 强参数:允许嵌套属性
【发布时间】:2018-06-20 21:14:01
【问题描述】:

假设我有控制器params,其结构如下:

{
  "foo" => {
    "id" => 123,
    "children" => {
      "0" => {
        "a" => "a"
      },
      "1" => {
        "b" => "b"
      }
    }
  }
}

如何明确允许所有数据?我不想在层次结构中的任何位置允许任意数据。

我曾预料到这项工作:

params.require(:foo).permit(:id, children: { "0" => [:a], "1" => [:b] })

但是,它返回:

{ "id" => 123, "children" => { "0" => {}, "1" => {} } }

如何将每个孩子的允许属性列入白名单?

【问题讨论】:

  • 奇怪的是,当子键不是数字时,我得到了预期的结果。这是一个错误吗?
  • 我使用的是 Rails 5.1.6

标签: ruby-on-rails strong-parameters


【解决方案1】:

尝试使用方括号代替大括号:

params.require(:foo).permit(
  :id,
  children: [
    "0": [:a],
    "1": [:b]
  ]
)

【讨论】:

  • 这也不起作用。这也会返回 {"id"=>123, "children"=>{"0"=>{}, "1"=>{}}} 并向控制台打印两条消息:Unpermitted parameter: :a Unpermitted parameter: :b
【解决方案2】:

试试这个

params.require(:foo).permit(:id, :children => { :"0" => [:a], :"1" => [:b] })

【讨论】:

    猜你喜欢
    • 2013-07-22
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多