8

devise_invitableメーラーの件名を変更し、招待メールの件名は、私がはデフォルトで

subject: '%{invited_by} has invited you!' 

にそれを変更したい

mailer: 
     invitation_instructions: 
     subject: 'Invitation instructions' 

であるが、これはtranslateメソッドにアクセスできる変数invited_by持っている必要がありi18nの場合

デフォルトの動作をあまり変更しないでこの変数をアクセス可能/宣言するにはどうすればよいですか?

考案のデフォルトメーラがあなたのために動作しません
+0

邪魔して申し訳ありませんが、それはあなたのように見えます私の答えはあなたの恩恵に価値があるとは思わないし、私はそれについて少し気になります。 答えが間違っていると思いますか、それとも十分詳細ではないと思いますか? – Alexis

+0

実際、私はそれを打ち切りました、そして、私は今それが意図したように動作することを確認しています。 –

答えて

27

が、それはカスタムメールプログラムを設定し、そこに独自のsubject_forヘルパーを定義するのは非常に簡単です:

# in config/initializers/devise.rb: 
... 
config.mailer = "CustomDeviseMailer" 
... 
# in app/mailers/custom_devise_mailer.rb: 

class CustomDeviseMailer < Devise::Mailer 
    protected 

    def subject_for(key) 
    return super unless key.to_s == 'invitation_instructions' 

    I18n.t('devise.mailer.invitation_instructions.subject', 
     :invited_by => resource.invited_by.try(:full_name) || 'Someone') 
    end 
end 
+1

ある時点で文字列からシンボルに切り替えるので、key ==:invitation_instructions以外のスーパースーパーが必要な場合があります。 – schpet

+0

コードを将来的に証明するための 'to_s'が追加されました – kikito

+0

また、 "正しい"として、@NickGinanto – kikito

関連する問題