Невозможно переопределить контроллер паролей Devise - PullRequest
12 голосов
/ 10 января 2012

Мне нужно, чтобы мое приложение Rails перенаправляло на домашнюю страницу после отправки электронного письма, чтобы отправить мне инструкции по сбросу пароляDevise, по умолчанию отображает форму входа после ввода электронного письма.

Поэтому я пытаюсь переопределить Devise::PasswordsController и изменить его redirect_to, но безуспешно.На самом деле, я не думаю, что Rails даже учится в моем классе.Это может быть очень глупой ошибкой, но я был в ней полдня безуспешно.

Я воспользовался идеей переопределить контроллер паролей с здесь .

Вот мой контроллер:

class PasswordsController < Devise::PasswordsController
  protected
  def after_sending_reset_password_instructions_path_for(resource_name)
    root_url
  end
end

Routes.rb:

devise_for :users, :controllers => {:passwords => "passwords"}
devise_for :users, :controllers => {:registrations => "registrations"}
devise_for :users, :controllers => {:sessions => "sessions"}

Я хотел бы отметить, что я переопределил контроллеры регистрации и сессий Devise в одном приложении, и они, кажется,отлично работает.

Ответы [ 2 ]

12 голосов
/ 09 октября 2012

Должна быть возможность переопределить контроллер с последней версией Devise (2.1.2).

class PasswordsController < Devise::PasswordsController
  def new
    super
  end

  def create
    ..override method here..
  end
end

И в config/routes.rb:

devise_for :users, controllers: { passwords: 'passwords', .. }

Вы можете проверитьс rake routes, если Rails использует производное PasswordsController вместо исходного, маршруты должны, например, содержать passwords#new вместо devise/passwords#new.

3 голосов
/ 11 января 2012

Я думаю, вы забыли упомянуть ваши изменения в маршрутах:

devise_for :users, :controllers => {:sessions => "sessions", :passwords => "passwords"}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...