我在模块中定义了两个邮件程序类,如下所示:
1。应用程序/邮寄者/ my_mailers / mailer_a.rb
module MyMailers
class MailerA < BaseMailer
def main
mail(:to => 'xyz@abc.com', :subject => 'Mail Subject')
end
end
end
2。应用程序/邮寄者/ 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类可用),然后通过搜索{来尝试通过mail()方法调用发送邮件{1}}目录中的{1}}模板。但是main
视图没有任何app/views/my_modules/mailer_b
模板,因此它应该回退到mailer_b
视图目录的父类视图并开始呈现main
但在我的情况下,收到的邮件总是空的,好像没有找到模板,我认为搜索模板只停在mailer_a
目录,而不是在邮件程序继承中更进一步。
我也尝试过使用:template_path机制,但结果仍然相同(空邮件)
任何可以为此类案例提出修复/解决方案的人?如果我要提供更多细节,请告诉我。
使用Rails版本:3.2.1x
由于
答案 0 :(得分:0)
为什么你为你的邮件使用了一个模块。你的代码很好,我没有看到你的模板没有相应加载的任何理由。尝试删除模块,只需使用这样的类: -
class MailerA < BaseMailer
default from: "support@mydomain.com"
##if needed
##layout 'mailer_a'
def registration_confirmation(user_email)
//do your stuff with user_email
mail(:to => user_email, :subject =>"Good to see you")
##in case multiple templates in same folder
## mail(:to => user_email, :subject =>"Good to see you", :template_name => "main_2")
end
end##class ends