2013-03-13 5 views
4

Это странно для меня, так что я просто интересно, если кто-то столкнулся с этим:Невозможно разрешить параметры?

Я получил следующее:

def credential_params 
    params.required(:credential).permit(:name,:agent_ids) 
end 

В моем контроллере создавать и обновлять действия я используя массовое присваивание с вышеупомянутым вызовом параметра ...

@credential.update_attributes(credential_params) 

Но я все еще получаю Unpermitted parameters: agent_ids

Если изменить это params.required(:credential).permit! (т. Е. Разрешить все), конечно, он работает.

Я чувствую, что, должно быть, я должен упускать некоторые очевидные результаты здесь ... кто-нибудь знает, что это может быть?

+0

не следует, что быть 'require'? – jvnill

+0

@jvnill - после просмотра документов это должно быть, но знаете что? Он работает как «обязательный». Интересно, если это ошибка или функция ... – Andrew

+0

@jvnill: это функция 'required' является псевдонимом для' require', см. Источник рядом с: https://github.com/rails/strong_parameters/blob/ master/lib/action_controller/parameters.rb # L58 – Andrew

ответ

5

попробовать

params.require(:credential).permit(:name, { :agent_ids => [] }) 
+0

Я думаю, что мы выложили примерно то же самое время, но я дам вам ответ, потому что это не стоит никаких моментов :) Спасибо, что посмотрели! – Andrew

+0

ах спасибо. да, это выглядит как разница в несколько секунд. – jvnill

5

Got it.

Массив не один из supported types:

Допустимые скалярные типы String, Symbol, NilClass, Числовой, TrueClass, FalseClass, дата, время, DateTime, StringIO, IO, ActionDispatch :: Http :: UploadedFile и Rack :: Test :: UploadedFile.

Поэтому решение указать массив, например, так:

params.require(:credential).permit(:name, :agent_ids => []) 

Надежда другие считают это полезным.

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