9

コレクションを反復処理し、Ruby on Rails を使用して SendGrid テンプレートに情報を表示しようとしています。

recipient = SendGrid::Recipient.new("sergio@gmail.com")
recipient.add_substitution("username", user.github_id)
recipient.add_substitution("numbers", [1,2,3,4])

Gmail では、このテンプレートは次のように届きます。

sergiotapia
ARRAY(0x85b9d90)

SendGrid のエディターからコピーした、テンプレートの実際のコード:

<html>
  <head>
    <title></title>
  </head>
  <body>
    <div>&lt;%body%&gt;</div>

    <div>username</div>

    <div>numbers</div>

    <p>This is a small example email.</p>
  </body>
</html>

SendGrid テンプレートでジェネリック配列またはオブジェクトを反復処理するにはどうすればよいですか? この特定の例では、ユーザーには多くの投稿があり、ユーザーの投稿のタイトルを要素postsに表示したいだけです。<li>

SendGrid がどのように機能するかを確認するために、単純な数値配列を試してみました。

4

7 に答える 7

9

データの反復例:

{
  "people":[{"name":"Bob"},{"name":"Sally"}]
}

コード:

{{#if people}}
  <p>People:</p>
  {{#each people}}
    <p>{{this.name}}</p>
  {{/each}}
{{/if}}

結果:

人々:

ボブ

サリー

于 2019-07-10T12:47:41.533 に答える
4
{{#each data.products}}
    {{name}}: {{price}} <br/>
{{/each}}

{"data":{"products": [{"name": "Tomato", "price": "5"}, {"name": "Banana", "price": "8"}]}}
于 2019-05-10T10:09:20.357 に答える
1

アップデート

SendGrid が動的テンプレートをサポートするようになりました。

これについては、ブログで読むことができます: https://sendgrid.com/blog/how-to-use-sendgrids-dynamic-templates-for-your-transactional-emails/

古い答え:

これを検索すると、次のGitHub の問題が発生しました。したがって、SendGrid では不可能です (まだ?)。

ただし、これを行う方法は他にもあります。sendwithusを使用すると、ループと反復をサポートするより強力なテンプレート エディターにアクセスできます。

独自の SendGrid API キーを使用して設定するだけで、SendGrid を使用してメールを送信する sendwithus テンプレートで配列を使用できるようになります。

于 2016-10-03T08:32:55.403 に答える
0

残念ながら、現時点では、SendGrid が提供するテンプレートはごくわずかです。テンプレートは配列を値としてサポートしておらず、条件付きまたはループ コントロールがないため、テンプレートとテンプレート コンテンツを構築する前にすべてを事前に決定する必要があります。より堅牢なテンプレート システムが間もなく登場します。

于 2015-12-28T15:06:10.570 に答える