Подтвердить что ты не робот

NameError (undefined локальная переменная или метод `devise_parameter_sanitizer '

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

NameError (undefined local variable or method `devise_parameter_sanitizer' 

Это то, что выглядит мой контроллер регистрации приложений:

def sign_up_params
devise_parameter_sanitizer.for(:sign_up)
end

Любые идеи?

Заранее спасибо

4b9b3361

Ответ 1

попробуйте использовать ветку rails4

gem 'devise', github: 'plataformatec/devise', branch: 'rails4'

Ответ 2

Посмотрев на открытые проблемы с Github, я нашел это: https://github.com/plataformatec/devise/issues/2372 - похоже, делает трюк для меня. обратите внимание, что это, вероятно, проблема с рельсами 4.

Ответ 3

Для всех, кто попадает сюда с ошибкой

undefined method `<<' for {}:ActionController::Parameters

вам нужно перейти на Devise 3.1.0.rc, как в этот комментарий
что в основном означает использование версии основной ветки

gem 'devise', git: 'git://github.com/plataformatec/devise.git'
Надеюсь, я помогу потерянным душам, поскольку я был на протяжении последних получаса.

Ответ 4

Последний выпущенный Gem for Devise на момент написания статьи - 2.2.4. Это не включает метод devise_parameter_sanitizer, следовательно, вы видите ошибку.

Возможно, вы следуете руководству для Devise на https://github.com/plataformatec/devise. Недавно был добавлен раздел о Rails 4 и сильных параметрах.

У вас есть несколько вариантов:

  • Получите последнюю главную версию Devise с помощью bundler, так что доступен метод devise_parameter_sanitizer:

    gem 'devise', :git => 'git://github.com/plataformatec/devise.git'

  • Не применяйте ActiveModel::ForbiddenAttributesProtection к своей модели пользователя, поэтому сильные параметры даже не используются. Подробнее здесь: Разработка и сильные параметры

  • Переопределите требуемые контроллеры Devise напрямую. См. Здесь: https://gist.github.com/kazpsp/3350730