Rails强烈的params,名字中带有“dot”

时间:2015-05-12 15:34:25

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

我需要在Rails 4中允许一个参数,它的名字中有一个点:

我的params哈希如下所示:

{
  "dictionary_objects.id" => [
    "102", "110", "106"
  ]
}

我可以获得参数值:

>> params['dictionary_objects.id']
=> [
 [0] "102",
 [1] "110",
 [2] "106"
]

但是当我尝试允许它时,它返回一个空哈希:

 >> params.permit('dictionary_objects.id')
 Unpermitted parameters: dictionary_objects.id
 => {}

有没有人知道如何允许使用带有圆点的params?

感谢。

2 个答案:

答案 0 :(得分:6)

我认为它只是没有允许它,因为你有一个收藏品并且你告诉它允许单一的价值参数。如果您使用:

params.permit(:'dictionary_objects.id' => [])
然后一切都会好起来的。

答案 1 :(得分:2)

对于边缘情况我推荐一个非常有用的解决方法:

params.slice('dictionary_objects.id').permit!

因此,你可以将密钥列入白名单,并且不会因为强大的障碍而变得疯狂。

旁注:

使用rails来接收dictionary_object_ids关系has_many之类的args,你可以利用它来代替。