2015-05-12 6 views
6

мне нужно разрешить параметр в Rails 4, который имеет точку в его имя:Рельсы сильные Params с «точкой» в имени

Мой 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 с точкой в ​​имени?

Спасибо.

ответ

6

Я думаю, что это просто не позволяет это сделать, потому что у вас есть коллекция, и вы говорите ей, чтобы разрешить один параметр значения. Если вы используете:

params.permit(:'dictionary_objects.id' => []) 

тогда все должно быть хорошо.

+0

Я не могу не одобрить обычный способ :) – apneadiving

+0

Он работает, спасибо за подсказку! – roody

2

для краевых случаев я рекомендую очень полезный обходной путь:

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

Так что вы делаете белый список ключей и DonT стать сумасшедшим из-за сильный Params.


Sidenote:

рельсы является встроенным получить арг как dictionary_object_ids для has_many отношений, вы могли бы использовать это вместо.

Смежные вопросы