2013-08-16 22 views
1

在我的行動郵件(軌道3.2.13)我有類似行動郵件提示錯誤,同時通過佈局

class RepaymentMailer < ActionMailer::Base 
    default from: "[email protected]" 

    def repayment_mail user, user_repayment_info, month_date 
    @mail_layout = if condition_true 
          'layout1' 
         else 
          'layout2' 
         end 

    mail(to:  "#{user.first_name} <#{user.email}>", 
    from:  "[email protected]", 
    bcc:  ["xxx <[email protected]>"], 
    reply_to: '[email protected]', 
    subject: "this is a test") do |format| 
     format.html { render layout: @mail_layout } 
     format.text 
    end 
    end 
end 

當我做

puts RepaymentMailer.repayment_mail(param1, param2, param3).deliver 

它給我的錯誤,即使repayment_mail模板存在

ActionView::MissingTemplate: Missing template repayment_mailer/repayment_mail with {:locale=>[:en], :formats=>[:text], :handlers=>[:erb, :builder, :coffee, :arb]}. Searched in: 

如果我刪除

do |format| 
     format.html { render layout: @mail_layout } 
     format.text 
    end 

那麼它的工作原理沒有錯誤。 但顯然我想要所需的佈局。什麼可能是錯誤的原因。

回答

1

因爲你的錯誤,它清楚地表明,問題是這一行:

Missing template repayment_mailer/repayment_mail with {:locale=>[:en], :formats=>[:text]**, :handlers=>[:erb, :builder, :coffee, :arb]}. 

我覺得你沒看過下面幾行:

class UserMailer < ActionMailer::Base 
    def welcome_email(user) 
    mail(to: user.email) do |format| 
     format.html { render layout: 'my_layout' } 
     format.text 
    end 
    end 
end 

這將使HTML部分使用my_layout.html.erb文件,文本部分使用通常的user_mailer.text.erb文件(如果存在)。

請在這裏閱讀。

感謝

+0

但是在軌導向裝置http://guides.rubyonrails.org/action_mailer_basics.html#action-mailer-layouts它被賦予像一樣我是如何實現的 – rtcoms

+0

嗯,知道了。它實際上是說缺少文本模板。愚蠢的錯誤。謝謝 – rtcoms

+0

這裏你會看到:如果存在,將使用my_layout.html.erb文件和通常的user_mailer.text.erb文件生成文本部分。 –