当I18n.locale设置为:en时,将ActionMailer设置为使用“foo.fr.erb”

时间:2010-10-22 13:17:01

标签: ruby-on-rails actionmailer

我有这段代码:

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 个答案:

答案 0 :(得分:3)

这有麻烦,所以这似乎是发表我的发现的合理位置

Rails会根据I18n.locale

自动找到模板

但是,这是错误的:foo.html.fr.erb

这是命名事物的正确方法:foo.fr.html.erb

答案 1 :(得分:0)

我终于找到了答案here

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