恢复密码失败后设计重定向

时间:2012-02-17 11:33:53

标签: ruby-on-rails ruby ruby-on-rails-3 devise

如果用户点击恢复密码按钮并且电子邮件输入字段为空,我如何重定向到某个自定义页面?现在我被重定向到users/password页面。 Devise没有提供任何方法来做到这一点。另一点是在我被重定向到的页面上应该有解释消息(例如“Email should not be blank.”)。

1 个答案:

答案 0 :(得分:2)

您需要对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_for :users, :controllers => { :passwords => :my_passwords }