「パスワードリセット手順」のメールの件名を変更できません。 Mailerのnotifer.rbを変更して、Deviseのデフォルトの電子メールの件名を上書きしました。しかし、それは機能していません。
私のアプリケーションでは、Devise.ymlファイル内にデフォルトの電子メールの件名があります。しかし、DBからデータを取得して変更することを動的にしたいと思います。
intilizerディレクトリのdevise.en.ymlファイルで変更できます
そして、メーラーに独自の件名を設定します
mailer:
confirmation_instructions:
subject: 'Confirmation instructions'
reset_password_instructions:
subject: 'Reset password instructions'
unlock_instructions:
subject: 'Unlock Instructions'
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
次に、私のメーラーを使用するように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: 'パスワード再設定手順のお知らせ'
ステップ2 config/environment /development.rb上
config.i18n.default_locale = :ja
ステップサーバーを再起動します
私の場合のように、Deviseメッセージを翻訳する場合は、config/locale
に新しいymlファイルを作成し、config/application.rb
でアプリケーションのロケールを変更することをお勧めします。
説明のために、devise.pt-BR.yml
内にconfig/locale
を作成する必要がありました。
それから私はその翻訳をインターネットから このリンク にコピーしました。
最後に、アプリケーションの新しいロケールをconfig/application.rb
に次のように設定します。
config.i18n.default_locale = :'pt-BR'
それが私のものと同じ問題を抱えている皆さんの何人かを助けることを願っています。