【发布时间】:2015-01-14 09:47:11
【问题描述】:
我在一个模块中定义了两个邮件类,如下所示:
1. app/mailers/my_mailers/mailer_a.rb
module MyMailers
class MailerA < BaseMailer
def main
mail(:to => 'xyz@abc.com', :subject => 'Mail Subject')
end
end
end
2。 app/mailers/my_mailers/mailer_b.rb
module MyMailers
class MailerB < MailerA
def some_method
end
end
end
和所有邮件程序的基类:app/mailers/base_mailer.rb
class BaseMailer < ActionMailer::Base
...
...
end
现在这些邮件的模板和部分存储在(带有一些 html 代码):
mailer_a 模板
app/views/my_mailers/mailer_a/main.html.erb
app/views/my_mailers/mailer_a/_header.html.erb
app/views/my_mailers/mailer_a/_body.html.erb
app/views/my_mailers/mailer_a/_footer.html.erb
mailer_b 模板
/app/views/my_mailers/mailer_b/some_random_templ.html.erb
app/views/my_mailers/mailer_a/main.html.erb的示例内容
<% render partial: 'header' %>
<% render partial: 'body' %>
<% render partial: 'footer' %>
问题:
当我尝试调用 MailerB 的 main() 方法时,它应该调用 MailerA 的 main() 方法(因为 MailerB 类没有可用的 main 方法),然后尝试通过搜索 @ 通过 mail() 方法调用发送邮件app/views/my_modules/mailer_b 目录中的 987654331@ 模板。但是mailer_bviews 没有任何main 模板,所以它应该回退到父类视图mailer_aviews 目录并开始渲染main.html.erb
但在我的情况下,收到的邮件总是空的,就好像没有找到模板一样,我认为搜索模板仅在 app/views/mailer_b/ 目录停止,并且不会在邮件继承中进一步上升。
我也尝试过使用 :template_path 机制,但结果还是一样(空邮件)
谁能为这种情况提出一些修复/解决方案?请让我知道我是否应该提供更多详细信息。
使用 Rails 版本:3.2.1x
谢谢
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 templates