2

API のみの Rails アプリを作成しましたが、サード パーティのメール サービスを使用しているため、メール テンプレートを文字列にレンダリングしてメール サービスのラッパー gem に渡す必要があります。これまでのところ、テンプレートを文字列にレンダリングしようとすると、空の文字列が返されます。これは、アプリケーションが API のみとして構成されているためだと思われます。テンプレートを文字列にレンダリングするためのサポートを追加するにはどうすればよいですか?

そうでない場合は、お知らせください。消印メールサービスを利用しています。postmark-rails標準の Rails メーラーに統合される gem はまったく機能せず、プレーンなpostmarkgem (消印 SMTP サーバーの代わりに消印 API を使用) は正常に機能しますが、現在、私の問題は電子メールの適切な html を生成することです。

これは私がしようとしているものです:

html = render_to_string(
            partial: "transfer_mailer/transfer.html.erb",
            locals: {
                :@body => @body,
                :@campaign => @campaign,
                :@chat => @chat
                }
        )

しかし、空の文字列を返します。

私のセットアップにはRails 5.0.1ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]、 、およびSidekiq 4.2.7と を使用するプロダクション imが含まれます。運用環境は Azure 仮想マシンにデプロイされ、ポート 25、465、2525、および 587 を通過するトラフィックを許可するためのインバウンド ルールとアウトバウンド ルールの両方を追加しました。nginx/1.10.2Phusion Passenger 5.1.1

どんな助けでも本当に感謝しています。

4

2 に答える 2

0

のドキュメントを見るとrender_to_string、パスに を含める必要がないように見えるため、それを.html.erb削除すると修正される可能性があります。

コード例については、こちらを参照してください。

あなたの場合、それは次のようになります。

   render_to_string(
       partial: '/transfer_mailer/transfer',
        locals: {
            :@body => @body,
            :@campaign => @campaign,
            :@chat => @chat
        },
       layout: false
    )

render_to_stringまた、 orrender呼び出しに含めなくても、部分的なファイル名がアンダースコアで始まることを確認してください。

于 2016-12-27T19:49:18.427 に答える