如何使premailer gem与活跃邮件一起工作

时间:2012-06-21 11:43:46

标签: ruby actionmailer

我可能会遇到并发症,因为我使用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文件,没有任何样式设置为内联。

正确呈现视图,当我运行预编译器自己生成内联样式时它工作正常,当我使用activemailer时遇到问题。

我看过How to Integrate 'premailer' with Rails,但它对我不起作用。

1 个答案:

答案 0 :(得分:0)

哇,这是语法错误! 我不会对此感到惊讶,除非它从未给我任何错误消息,所以如果未来任何人坐在一个类似的情况下不要指望你的语法错误被捕获。 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
   }