8

auf standardmäßig ist das Thema für die Einladung MailÄndern devise_invitable Mailer Thema

mailer: 
     invitation_instructions: 
     subject: 'Invitation instructions' 

Ich möchte es ändern

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

aber dies erfordert invited_by Variable zugänglich übersetzen Methode haben für i18n.

Wie kann ich diese Variable aufrufen/deklarieren, ohne das Standardverhalten zu sehr zu ändern?

+0

leid zu stören, aber es sieht aus wie Sie denke nicht, dass meine Antwort deine Prämie wert ist, und ich bin ein bisschen neugierig darauf. Glaubst du, die Antwort ist falsch, oder es ist nicht detailliert genug oder so? – Alexis

+0

Eigentlich habe ich es updated, und ich überprüfe jetzt, um zu sehen, dass es wie vorgesehen funktioniert. –

Antwort

27

Devise Standard-Mailer wird für Sie nicht arbeiten, aber es ist ganz einfach, einen benutzerdefinierten Mailer einrichten und definieren dort Ihre eigenen subject_for Helfer:

# 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

irgendwann haben sie es von einem String zu einem Symbol, so müssen Sie möglicherweise Return super verwenden, es sei denn key ==: invitation_instructions – schpet

+0

Hinzugefügt 'to_s', um den Code zukunftssicher machen – kikito

+0

Auch ich denke, diese Antwort verdient es, markiert zu werden als "richtig", @NickGinanto – kikito