2016-12-27 2 views
1

api専用のrailsアプリケーションを作成しましたが、私はサードパーティ製の電子メールサービスを使用しているので、電子メールテンプレートを渡す文字列にレンダリングできる必要がありますメーリングリストラッパーの宝石に。これまでのところ、テンプレートを文字列にレンダリングしようとすると、空の文字列が返されました。アプリケーションがAPIのみに設定されているためです。私は文字列にテンプレートをレンダリングするサポートを追加しますか?rails api専用のアプリケーションにビューをレンダリングするサポートを追加しました

これが当てはまらない場合は、私にお知らせください。私はポストマークメールサービスを使用しています。 postmark-rails gemは標準レールに統合されています。メーラーはまったく動作しませんでした。普通のpostmark gem(postmark SMTPサーバーの代わりにpostmark 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を含み、かつ生産イムにnginx/1.10.2Phusion Passenger 5.1.1を使用します。プロダクション環境はAzure仮想マシンに導入され、ポート25,465,2525、および587を介してトラフィックを許可するためのインバウンドとアウトバウンドの両方のルールを追加しました。

本当にありがとうございます。

答えて

0

render_to_stringのドキュメントを見ると、パスには.html.erbを含める必要はないようですので、それを削除すると修正される可能性があります。あなたはいくつかのサンプルコードをhereを見ることができます

:あなたのケースでは

、それは次のようになります。

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

また、あなたが含まれていないにも関わらず、一部のファイル名がアンダースコアで始まることを確認してくださいrender_to_stringまたはrenderが呼び出されます。

+0

申し訳ありませんが、これは当てはまりません。特に、2つのテンプレートがあります:1つは 'html.erb'で終了し、もう1つは' text.erb'で終了します。これは、メーラーテンプレートに関しては正常です。今のところ、私の回避策はコントローラに 'ActionView :: Helpers :: AssetTagHelper'を含めることです。ファイルを' File'インスタンスにロードし、それを読んで[ERB]に渡します(http: /stackoverflow.com/a/14351129/667599)。とにかく、あなたの助けに感謝:)。 – Throoze

0

render_to_stringを使用して問題を解決するもう1つの方法があります。以下のコードをご覧ください。

@body = XXX 
@campaign = YYY 
@chat = ZZZ 
html = render_to_string(
    file: 'transfer_mailer/transfer.html.erb' 
) 

希望します。

関連する問題