1

当我使用 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 时,我遇到了问题。

我看过如何将'premailer'与Rails集成,但它对我不起作用。

4

1 回答 1

0

哇,这是一个语法错误!我不会对此感到惊讶,除非它从未给我任何错误消息,因此如果将来有人遇到类似情况,不要指望您的语法错误已被捕获。do |格式| 应该从方法中移出,并且渲染应该具有要渲染的实际视图,所以

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
   }

结尾

于 2012-07-03T08:49:08.597 回答