2015-01-14 39 views
0

我有如下的模塊內定義的兩個郵件收發器類:模板未被拾取正確對郵寄者

1.應用程序/郵寄者/ my_mailers/mailer_a.rb

module MyMailers 
    class MailerA < BaseMailer 
    def main 
     mail(:to => '[email protected]', :subject => 'Mail Subject') 
    end 
    end 
end 

2.應用/mailers/my_mailers/mailer_b.rb

module MyMailers 
    class MailerB < MailerA 
    def some_method 
    end 
    end 
end 

和所有的基地班郵寄:應用程序/郵寄/ 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()方法,它應該調用main()的MailerA的方法(因爲沒有可用於MailerB類的主要方法),該方法依次試圖通過海上的mail()方法調用發送郵件在app/views/my_modules/mailer_b目錄中輸入main模板。但mailer_b觀點沒有任何main模板,所以應該退回到父類的觀點是mailer_a views目錄,並開始渲染main.html.erb

但在我的情況下,接收到的郵件始終是空的,因爲如果沒有找到模板我認爲搜索模板只停留在app/views/mailer_b/目錄,並且不會繼續進行郵件程序繼承。

我也曾嘗試使用:template_path機制,但結果還是一樣的(空郵)

任何人誰可以提出這樣的情況下,一些修復/解決方案?請讓我知道我是否應該提供更多細節。

使用Rails版本:3.2.1x

感謝

回答

0

你爲什麼要使用一個模塊爲您mailers.Your代碼是很好的,我不認爲有任何理由爲什麼你的模板沒有相應加載。嘗試取出模塊,只是使用類是這樣的: -

class MailerA < BaseMailer 
    default from: "[email protected]" 
    ##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 
+0

'mailer_a'和'mailer_b'模板被歸類爲郵寄一些特定的目的,因此我杵他們到'my_mailers'模塊,任何新ex:mailer_c的類似郵件將成爲同一模塊的一部分。 –

+0

我試着按建議移除模塊'my_modules',但仍然沒有選擇合適的模板。 –