在我的动作邮件中(rails 3.2.13)我有类似
的内容class RepaymentMailer < ActionMailer::Base
default from: "repayments@milaap.org"
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: "xxx@xxx.org",
bcc: ["xxx <xxx@xxx.org>"],
reply_to: 'xxx@xxx.org',
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
然后它没有错误地工作。 但显然我想要所需的布局。可能是错误的原因。
答案 0 :(得分: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
这将使用my_layout.html.erb
文件呈现HTML部分,并使用通常的user_mailer.text.erb
文件呈现文本部分(如果存在)。
请在这里阅读。
由于