Rails 3.1 ActionMailer自定义模板路径?

odo*_*llt 7 ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

是否可以自定义Rails 3.1 ActionMailers的模板路径?默认情况下,Rails查找:

/app/views/[mailer_class]
Run Code Online (Sandbox Code Playgroud)

用于邮件程序视图模板.但是,我更愿意组织它们:

/app/mailers/views/[mailer_class]
Run Code Online (Sandbox Code Playgroud)

或至少:

/app/views/mailers/[mailer_class]
Run Code Online (Sandbox Code Playgroud)

我知道这可以通过ActionMailer的template_path配置参数在2.3中实现,但是从Rails 3开始这似乎已被弃用了.这种自定义不再可能吗?

JDu*_*til 12

这种定制仍然是可能的.根据您的邮件编写方式,有几种不同的方法可以执行此操作.

如果你有格式块,例如format.html,你可以将渲染'/ path /传递给/ template'.

或者,如果您只是调用mail(),则有两个选项可用于设置路径和模板名称,您只需要传递路径选项即可:

mail(:template_path => 'mailers/[mailer_class]', :template_name => '[mailer_method]')
Run Code Online (Sandbox Code Playgroud)

您应该查看Rails指南以获取更多详细信息.

http://guides.rubyonrails.org/action_mailer_basics.html#mailer-views

  • 我见过文档,但我没想到template_path是相对于/ app/views的.谢谢! (2认同)