当我在开发中使用letter_opener检查输出时,我可能会遇到一些复杂的问题。
无论如何,当我运行一封电子邮件时,我会调用以下代码:
add_attachment('mobile.css')
mail(to: @user.email, subject: @alert.title do |format|
format.html {
Premailer.new(
"#{render}",
:with_html_string => true,
:css => [Rails.root.join("app/assets/mail/basestyles.css"),Rails.root.join("app/assets/mail/" + Site.current.name + ".css")],
:preserve_styles => true
).to_inline_css
}
format.text {
Premailer.new(
"#{render}",
:with_html_string => true,
:css => [Rails.root.join("app/assets/mail/basestyles.css"),Rails.root.join("app/assets/mail/" + Site.current.name + ".css")],
:preserve_styles => true
).to_plain_text
}
end
)现在,这不会引发任何错误,但当我运行它时,我得到的是未设置内联样式的html文件。
视图是正确呈现的,当我运行premailer来自己生成内联样式时,它工作得很好,但当我使用activemailer时,我遇到了问题。
我看过How to Integrate 'premailer' with Rails,但它对我不起作用。
发布于 2012-07-03 16:49:09
哇,这是一个语法错误!我不会对此感到惊讶,除非它从来没有给我任何错误消息,所以如果将来有人遇到类似的情况,不要指望你的语法错误已经被捕获。do |format|应该移出方法,渲染应该具有要呈现的实际视图,因此
add_attachment('mobile.css')
mail(to: @user.email, subject: @alert.title) do |format|
format.html {
Premailer.new(
"#{render 'path to view to render'}",
:with_html_string => true,
:css => [Rails.root.join("app/assets/mail/basestyles.css"),Rails.root.join("app/assets/mail/" + Site.current.name + ".css")],
:preserve_styles => true
).to_inline_css
}结束
https://stackoverflow.com/questions/11137407
复制相似问题