При попытке создать на модели с канкан, установленным в manage: all
Я постоянно получаю эту ошибку:Fix Rails Gem CanCan ошибка для ActiveModel :: ForbiddenAttributesError
ActiveModel::ForbiddenAttributesError - ActiveModel::ForbiddenAttributesError:
Я нашел затруднительное онлайн here.
Это вставляет этот код в мой контроллер приложений:
before_filter do
resource = controller_name.singularize.to_sym
method = "#{resource}_params"
params[resource] &&= send(method) if respond_to?(method, true)
end
Это приводит к моему вопросу. У меня две модели с ассоциацией belongs_to_has_many
и метод, который добавляет пользователя в группу.
Когда я хочу добавить пользователя в группу, используя add_user
, который принимает идентификатор группы и объект пользователя, я получаю эту ошибку.
Процедура вызывается:
<%= link_to 'Add', add_user_group_path(group: @group, user_id: id) %>
Метод выглядит следующим образом:
def add_user
group = Group.find(params[:id])
user = User.find(params[:user_id])
group.users << user
end
И это ошибка:
Parameters: {"group"=>"16", "id"=>"16", "user_id"=>"332"} NoMethodError - undefined method `permit' for "16":String:
Что такое before_filter
способ сделать это приведет к этой ошибке?
================ UPDATE ===================
Я в конечном итоге выяснить это ,
Поскольку идентификатор группы автоматически передается в вызове add_user от контроллера я должен был изменить эту строку:
<%= link_to 'Add', add_user_group_path(group: @group, user_id: id) %>
к:
<%= link_to 'Add', add_user_group_path(user_id: id) %>
И теперь он работает. Оказывается, когда вы передаете объект @group, параметр «group => x» получает синтаксический анализ.
Есть причина, вы используете '' CanCan' над CanCanCan'? – ptd
Пожалуйста, скопируйте содержимое вашего контроллера, чтобы мы могли видеть, что там происходит. –
Я действительно никогда не слышал о CanCanCan – essefbx