遍历 SendGrid 电子邮件模板中的数组

Ser*_*pia 5 email api substitution sendgrid transactional-email

我正在尝试使用 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])
Run Code Online (Sandbox Code Playgroud)

在 gmail 中,此模板作为以下内容到达:

sergiotapia
ARRAY(0x85b9d90)
Run Code Online (Sandbox Code Playgroud)

从 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>
Run Code Online (Sandbox Code Playgroud)

如何遍历 SendGrid 模板中的通用数组或对象?对于这个特定的例子,一个用户有很多posts,我只想在一个<li>元素中显示用户帖子的标题。

我只是用一个简单的数字数组来尝试一下,看看它 SendGrid 是如何工作的。

小智 11

2018 年 8 月更新:

Sendgrid 现在使用把手从交易电子邮件中提供迭代器,这里是文档以获取更多信息:

https://sendgrid.com/docs/for-developers/sending-email/using-handlebars/#basic-iterator


小智 6

{{#each data.products}}
    {{name}}: {{price}} <br/>
{{/each}}

{"data":{"products": [{"name": "Tomato", "price": "5"}, {"name": "Banana", "price": "8"}]}}
Run Code Online (Sandbox Code Playgroud)

  • 虽然此代码可以回答问题,但最好解释如何解决问题并提供代码作为示例或参考。仅代码答案可能会令人困惑并且缺乏上下文。 (4认同)

小智 5

迭代数据示例:

{
  "people":[{"name":"Bob"},{"name":"Sally"}]
}
Run Code Online (Sandbox Code Playgroud)

代码:

{{#if people}}
  <p>People:</p>
  {{#each people}}
    <p>{{this.name}}</p>
  {{/each}}
{{/if}}
Run Code Online (Sandbox Code Playgroud)

结果:

人们:

鲍勃

莎莉