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 }