Разработать редирект после сбоя восстановления пароля - PullRequest
0 голосов
/ 17 февраля 2012

Как я могу перенаправить на какую-нибудь пользовательскую страницу, если пользователь нажимает кнопку восстановления пароля с пустым полем ввода электронной почты?Теперь я перенаправлен на users/password страницу.Devise не предоставляет никакого способа сделать это.Другое дело, что объяснительное сообщение должно быть доступно (например, "Email should not be blank.") на странице, на которую я перенаправлен.

1 Ответ

2 голосов
/ 17 февраля 2012

Для этого необходимо создать подкласс Devise passwords_controller.rb и переопределить метод create.

В app/controllers/my_passwords_controller.rb:

class MyPasswordsController < Devise::PasswordsController
  # POST /resource/password
  def create
    self.resource = resource_class.send_reset_password_instructions(params[resource_name])

    if resource.errors.empty?
      set_flash_message(:notice, :send_instructions) if is_navigational_format?
      respond_with resource, :location => new_session_path(resource_name)
    else

      # Redirect to custom page instead of displaying errors
      redirect_to my_custom_page_path

      # respond_with_navigational(resource){ render_with_scope :new }

    end
  end
end

Затем измените routes.rb, чтобы сообщить devise для использования этого контроллера:

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