I'm trying to iterate through a collection and display information in a SendGrid template using Ruby on Rails.
recipient = SendGrid::Recipient.new("[email protected]")
recipient.add_substitution("username", user.github_id)
recipient.add_substitution("numbers", [1,2,3,4])
In gmail, this template arrives as:
sergiotapia
ARRAY(0x85b9d90)
The actual code for the template, copied from SendGrid's editor:
<html>
<head>
<title></title>
</head>
<body>
<div><%body%></div>
<div>username</div>
<div>numbers</div>
<p>This is a small example email.</p>
</body>
</html>
How can I iterate through a generic array or object in a SendGrid template? For this particular example, a user has many posts
and I just want to show the title of the user's posts in a <li>
element.
I'm just trying things out with a simple number array to see how it SendGrid works.
Iterate example for the data:
{
"people":[{"name":"Bob"},{"name":"Sally"}]
}
Code:
{{#if people}}
<p>People:</p>
{{#each people}}
<p>{{this.name}}</p>
{{/each}}
{{/if}}
Result:
People:
Bob
Sally
Update August 2018:
Sendgrid now offers iterators from the transactional email using handlebars, here's to the docs for more info:
https://sendgrid.com/docs/for-developers/sending-email/using-handlebars/#basic-iterator
{{#each data.products}}
{{name}}: {{price}} <br/>
{{/each}}
{"data":{"products": [{"name": "Tomato", "price": "5"}, {"name": "Banana", "price": "8"}]}}
Update
SendGrid now has support for dynamic templates!
You can read about it on their blog: https://sendgrid.com/blog/how-to-use-sendgrids-dynamic-templates-for-your-transactional-emails/
Old answer:
Searching for this resulted the following GitHub issue. So it's not possible with SendGrid (yet?).
However there are other ways to do this. Using sendwithus you get access to a more powerful template editor that supports looping and iterating.
Simply set it up using your own SendGrid API key and you will be able to use the arrays in the sendwithus template which will send the mail using SendGrid.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With