【问题标题】:whitelisting deeply nested strong parameters in rails在rails中将深度嵌套的强参数列入白名单
【发布时间】:2014-06-11 19:25:22
【问题描述】:

我正在尝试将序列化的 Ransack 搜索存储在文本列中。它嵌套得很深,我正在努力提出许可要求。这是一个示例哈希:

{
  "c"=>{
    "0"=>{
      "a"=>{
        "0"=>{
          "name"=>"column_1"
        }
      },
      "p"=>"eq",
      "v"=>{
        "0"=>{
          "value"=>"value_1"
        }
      }
    },
    "1"=>{
      "a"=>{
        "0"=>{
          "name"=>"column_2"
          }
      },
      "p"=>"cont",
      "v"=>{
        "0"=>{
          "value"=>"value_2"
        }
      }
    }
  }
}

你会如何为此写许可证?这是我阅读文档的最佳猜测,但它不起作用。

def course_listing_params
  params.require(:course_listing).permit({ q: { c: [{ a: [:name] }, :p,  { v: [:value] }] } })
end

【问题讨论】:

  • permit(q: [c: [a: [:name]]])怎么样
  • 名称部分没有被提交,不。
  • 你有什么错误吗?
  • 没有错误,我只是无法保存 :q 参数。
  • 嘿@Dave,看看这个stackoverflow.com/questions/29714451/… - 它参考了你的问题,你可以帮忙

标签: ruby-on-rails ruby-on-rails-4 strong-parameters ransack


【解决方案1】:

我最终构建了另一个模型来存储条件并使用accepts_nested_attributes_for 在 course_listing 控制器中创建所有条件。

我必须添加

conditions_attributes: [:id, :attr, :pred, :val, :_destroy]

我的许可电话,以使一切正常。中间三个是我自己的属性, :id 防止 Rails 在每次编辑时添加新条件, :_destroy 是为了让你可以删除条件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-02
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 2015-09-20
    相关资源
    最近更新 更多