8

na domyślnie przedmiotem poczty zaproszenieZmiana devise_invitable mailera przedmiot

mailer: 
     invitation_instructions: 
     subject: 'Invitation instructions' 

chciałbym zmienić go na

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

ale wymaga to mieć invited_by zmienna dostępne metody przeliczenia dla i18n.

Jak ustawić tę zmienną jako dostępną/deklarowaną bez zmiany domyślnego zachowania?

+0

przykro przeszkadzać, ale wygląda na to, nie myśl, że moja odpowiedź jest warta twojej nagrody i jestem trochę ciekawa tego. Czy uważasz, że odpowiedź jest błędna, lub nie jest wystarczająco szczegółowa, czy coś w tym stylu? – Alexis

+0

Właściwie to przegłosowałem i teraz sprawdzam, czy działa zgodnie z przeznaczeniem. –

Odpowiedz

27

domyślny Devise Mailer nie będzie pracować dla Ciebie, ale jest to dość łatwy do skonfigurowania własnego programu pocztowego i zdefiniować tam swoją subject_for pomocnika:

# 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

w pewnym momencie przełączyli go z ciągu znaków na symbol, więc możesz potrzebować użyć polecenia return super, chyba że klucz ==: instrukcje_instrukcji – schpet

+0

Dodał 'to_s', aby kod był przyszłościowy – kikito

+0

Uważam też, że ta odpowiedź zasługuje na zaznaczenie jako "poprawny", @NickGinanto – kikito

Powiązane problemy