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) メソッドのみを実装し、ルートを設定するときにコントローラーを使用するようにデバイスに指示する必要があります。

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 に答える