邮件没有正确选取模板

时间:2015-01-14 09:47:11

标签: ruby-on-rails ruby ruby-on-rails-3 templates

我在模块中定义了两个邮件程序类,如下所示:

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

由于

1 个答案:

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