Установите 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

Другие вопросы по тегам