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 を使用すると問題が発生します。

How to Integrate 'premailer' with 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 に答える