2010-10-22 4 views
3

J'ai ce code:Set ActionMailer utiliser "foo.fr.erb" quand I18n.locale est réglé sur: en

class Mailer < ActionMailer::Base 

    def foo 
    recipients "[email protected]" 
    from  "[email protected]" 
    subject "Foo" 
    body  :var => "value" 
    end 

end 

Avec deux vues app/views/mailer:

  • foo.en.erb
  • foo.fr.erb

Lorsque j'utilise Mailer.deliver_foo, la vue utilisée pour b Utilisez le courriel foo.en.erb puisque I18n.locale est défini sur :en. Existe-t-il un moyen de contourner cela et d'utiliser foo.fr.erb, autre que de définir temporairement les paramètres régionaux sur :fr, d'envoyer l'e-mail, puis de revenir à :en.

Merci!

Répondre

0

J'ai finalement trouvé la réponse here.

def foo user 
    @template = "#{ActionMailer::Base::template_root}/mailer/foo.fr.erb" 

    recipients "[email protected]" 
    from  "[email protected]" 
    subject "Foo" 
    body  :var => "value" 
end 
+0

le lien est cassé –

3

a eu du mal avec ce que cela semble être un endroit raisonnable pour poster mes résultats

Rails trouveront automatiquement le modèle basé sur I18n.locale

Mais, cela est faux: foo.html.fr.erb

Ceci, est la bonne façon de nommer les choses: foo.fr.html.erb