Установите ActionMailer для использования "foo.fr.erb", когда I18n.locale установлен в:en
У меня есть этот код:
class Mailer < ActionMailer::Base
def foo
recipients "bar@example.com"
from "foo@example.com"
subject "Foo"
body :var => "value"
end
end
С двумя взглядами в app/views/mailer
:
foo.en.erb
foo.fr.erb
Когда я использую Mailer.deliver_foo
, представление, используемое для создания электронной почты foo.en.erb
поскольку I18n.locale
установлен в :en
, Есть ли способ обойти это и использовать foo.fr.erb
кроме временной установки локали на :fr
, отправив письмо, а затем вернувшись к :en
,
Спасибо!
2 ответа
Решение
Я наконец нашел ответ здесь.
def foo user
@template = "#{ActionMailer::Base::template_root}/mailer/foo.fr.erb"
recipients "bar@example.com"
from "foo@example.com"
subject "Foo"
body :var => "value"
end
Были проблемы с этим, так что это кажется разумным местом, чтобы опубликовать мои выводы
Rails автоматически найдет шаблон на основе I18n.locale
Но, это НЕПРАВИЛЬНО: foo.html.fr.erb
Это правильный способ назвать вещи: foo.fr.html.erb