我无法更改“密码重置说明”电子邮件的主题。 我已经更改了 Mailer 中的 notifier.rb 文件以覆盖 Devise 默认电子邮件主题。但是它没有起作用。
在我的应用程序中,Devise .yml 文件中有默认的电子邮件主题。 但是我想使它动态变化,通过从数据库中提取数据来更改它。
我无法更改“密码重置说明”电子邮件的主题。 我已经更改了 Mailer 中的 notifier.rb 文件以覆盖 Devise 默认电子邮件主题。但是它没有起作用。
在我的应用程序中,Devise .yml 文件中有默认的电子邮件主题。 但是我想使它动态变化,通过从数据库中提取数据来更改它。
mailer:
confirmation_instructions:
subject: 'Confirmation instructions'
reset_password_instructions:
subject: 'Reset password instructions'
unlock_instructions:
subject: 'Unlock Instructions'
class DeviseMailer < Devise::Mailer
def reset_password_instructions(record, token, opts={})
mail = super
# your custom logic
mail.subject = "[SOME DB DATA]"
mail
end
end
然后修改devise.rb初始化程序以使用我的邮件服务器。
# Configure the class responsible to send e-mails.
config.mailer = 'DeviseMailer'
更改选项:subject
:
class DeviseMailer < Devise::Mailer
def reset_password_instructions(record, token, opts={})
opts[:subject] = 'SOME DB DATA'
super
end
end
对于默认的外语(例如日语)
步骤1 在config/locales/目录下创建一个“ja.yml”文件(或任意其他文件名)
ja:
devise:
mailer:
confirmation_instructions:
subject: '仮会員登録完了のお知らせ'
reset_password_instructions:
subject: 'パスワード再設定手順のお知らせ'
config.i18n.default_locale = :ja
config/locale
中创建一个新的 yml 文件,并在 config/application.rb
中更改你的应用程序语言环境。
举个例子,我不得不在config/locale
中创建devise.pt-BR.yml
。
然后我从this link上复制了它的翻译。
最后,我在config/application.rb
中设置了我的应用程序的新语言环境,如下所示:
config.i18n.default_locale = :'pt-BR'
我在devise.en.yml文件中添加翻译内容时成功了,但是重设密码的正确键值应该是user_subject而不是subject
en: devise: mailer: reset_password_instructions: user_subject: 重设密码说明
config/locales
目录是什么? - Chris Boscoconfig/locales/devise.en.yml
翻译为英文意思是“配置/本地化/设备.英文.yml”。 - lostphilosopheren.devise.mailer.confirmation_instructions.subject
,参考链接:https://github.com/heartcombo/devise/blob/main/lib/devise/mailers/helpers.rb#L70 - duleorlovic