Не удается переопределить пароль паролей

Мне нужно, чтобы мое приложение Rails перенаправлялось на домашнюю страницу после отправки электронной почты для отправки мне инструкций пароля reset. 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"}

Я хотел бы упомянуть, что в этом же приложении у меня есть переопределенные Regiseations и Session Controllers, и они, похоже, работают нормально.

Ответ 1

Должно быть возможно переопределить контроллер с последней версией 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.

Ответ 2

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

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