Ruby on rails 在恢复密码失败后设计重定向

Ruby on rails 在恢复密码失败后设计重定向,ruby-on-rails,ruby,ruby-on-rails-3,devise,Ruby On Rails,Ruby,Ruby On Rails 3,Devise,如果用户在电子邮件输入字段为空的情况下单击“还原密码”按钮,如何重定向到某个自定义页面?现在我被重定向到users/password页面。Desive没有提供任何方法来实现这一点。另一点是,在我被重定向到的页面上应该有解释消息(例如“电子邮件不应为空。”)。您需要将designe的密码\u controller.rb子类化,并覆盖create方法 在app/controllers/my\u passwords\u controller.rb中: class MyPasswordsControll

如果用户在电子邮件输入字段为空的情况下单击“还原密码”按钮,如何重定向到某个自定义页面?现在我被重定向到
users/password
页面。Desive没有提供任何方法来实现这一点。另一点是,在我被重定向到的页面上应该有解释消息(例如“
电子邮件不应为空。
”)。

您需要将designe的
密码\u controller.rb
子类化,并覆盖
create
方法

app/controllers/my\u passwords\u 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

如何在此方法中自定义错误消息<代码>资源。错误在此方法中可用,但它包含默认消息,例如
未找到电子邮件
电子邮件不能为空
。我需要自定义此消息。我已尝试从我的用户模型中删除:validable并添加自定义验证器,但这仅适用于从
design::RegistrationController
派生的自定义注册控制器,而不适用于自定义密码控制器。最简单的方法可能是在某处创建自定义页面,如果找不到电子邮件,则重定向到该页面(或Desive::Password上的任何错误)。我已经更新了示例中的代码以反映这一点。
devise_for :users, :controllers => { :passwords => :my_passwords }