问题
I'm just unable to change "password reset instruction" email's subject. I have changed notifer.rb in Mailer to overwrite Devise default email subject. But it's not working.
Here in my application there is default Email subject inside Devise .yml file. But I want to make it dynamic to change it by pulling data from DB.
回答1:
you can change it in devise.en.yml file in intilizer directory
And set your own subject for any mailer
mailer:
confirmation_instructions:
subject: 'Confirmation instructions'
reset_password_instructions:
subject: 'Reset password instructions'
unlock_instructions:
subject: 'Unlock Instructions'
回答2:
I got this to work by creating my own sub-class of Devise::Mailer.
class DeviseMailer < Devise::Mailer
def reset_password_instructions(record, token, opts={})
mail = super
# your custom logic
mail.subject = "[SOME DB DATA]"
mail
end
end
And then modifying the devise.rb initializer to use my mailer.
# Configure the class responsible to send e-mails.
config.mailer = 'DeviseMailer'
回答3:
Change option :subject
:
class DeviseMailer < Devise::Mailer
def reset_password_instructions(record, token, opts={})
opts[:subject] = 'SOME DB DATA'
super
end
end
回答4:
You can write your own method inside your controller and call the respective mailer template. This will help you.. Else devise views, there will be a view page to send reset instruction. Change the content there..
回答5:
For default foreign language (example Japanese)
STEP 1 Create a 'ja.yml' in config/locales/ (or whatever filename)
ja:
devise:
mailer:
confirmation_instructions:
subject: '仮会員登録完了のお知らせ'
reset_password_instructions:
subject: 'パスワード再設定手順のお知らせ'
STEP 2 On config/environments/development.rb
config.i18n.default_locale = :ja
STEP 3 Restart server
回答6:
If you're willing to translate your Devise messages, which was my case, a better practice would be creating a new yml file in config/locale
and changing your application's locale at config/application.rb
To illustrate, I had to create
devise.pt-BR.yml
insideconfig/locale
.Then I copied its translations from internet, on this link.
Finally, I set my application's new locale at
config/application.rb
as follows:config.i18n.default_locale = :'pt-BR'
Hope it helps some of you guys having the same problem as mine.
来源:https://stackoverflow.com/questions/14600229/how-to-change-devise-password-reset-instruction-emails-subject