在 Rails 4 中使用 params.permit 将嵌套参数列入白名单



考虑这样的参数集:

params = ActionController::Parameters.new(
 {sync:{ 
   "id1":[{error:"1", balance:"1"}], 
   "id2":
       [
         {error:"2", balance:"2"},
         {error:"22", balance:"22"},
         ....
         {error:"n", balance:"n"}
       ]
   } 
  }
)

如何将嵌套键"id1"和"id2"列入白名单

params.require(:sync)
=> {"1"=>[{"error"=>"1", "balance"=>"1"}], "2"=>[{"error"=>"2",   "balance"=>"2"}]}

这没关系,但现在我想更深入。在这个哈希中,我想通过键从值中获取每个数组。我该怎么做?

>> params.require(:sync).permit(:id)
Unpermitted parameters: 1, 2
=> {}

我不喜欢 id2 的定义方式,但我不知道您是否可以操纵接收数据的方式。

您应该尝试像这样设置白名单:

params.require(:sync).permit({id1: [:error, :balance]}, {id2: [{:error, :balance},{:error, :balance},{:error, :balance}]})

最新更新