3

我正在使用带有 Rails 的 Devise 身份验证 gem。

如何显示来自 devise.en.yml 的消息:

send_instructions: 'You will receive an email with instructions about how to reset your password in a few minutes'

在发送密码恢复电子邮件后,而不是被重定向到站点的根目录?

更新:

我在 devise_controller.rb 中发现了一段有趣的代码:

def successfully_sent?(resource)
  notice = if Devise.paranoid
    resource.errors.clear
    :send_paranoid_instructions
  elsif resource.errors.empty?
    :send_instructions
  end

  if notice
    set_flash_message :notice, notice if is_navigational_format?
    true
  end
end

设置断点表明正在调用正确的行,:send_instructions分配给notice, set_flash_message 被调用,但是我看不到这一切的结果,因为我立即被重定向到根路径。

4

1 回答 1

7

查看设计的 PasswordsController 的源代码:https ://github.com/plataformatec/devise/blob/master/app/controllers/devise/passwords_controller.rb#L42

您必须在您的应用程序中创建一个从 Devise::PasswordsController 继承的 PasswordsController,仅实现 after_sending_reset_password_instructions_path_for(resource_name) 方法,并在设置路由时告诉 devise 使用您的控制器

class PasswordsController < Devise::PasswordsController
  protected
  def after_sending_reset_password_instructions_path_for(resource_name)
    #return your path
  end
end

在路线中

devise_for :users, :controllers => { :passwords => "passwords" }
于 2012-05-18T19:42:00.740 回答