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