Шаблоны Sendgrid с тестовыми данными и массивами

#sendgrid #sendgrid-templates

#sendgrid #sendgrid-шаблоны

Вопрос:

У меня есть некоторые тестовые данные, которые выглядят следующим образом:

 {
    "firstName":"Ben",
    "products": [{
      "name": "first product",
      "position": 0
    }, {
      "name": "second product",
      "position": 1
    }, {
      "name": "third product",
      "position": 2
    }]
}
  

В моем шаблоне у меня есть что-то вроде этого:

 <p>Hi {{firstName}}</p>
  

Который отлично работает.
Теперь я хочу просмотреть свои продукты

Итак, я попробовал это:

 {{#each products}}
    {{#if this.position == 0}}
        <h1>{{this.name}}</h1>
    {{else}}    
        <h2>{{this.name}}</h2>
    {{/if}}
{{/each}}
  

Но это не работает.
Я также не могу найти никакой документации о выполнении подобных инструкций if. Самый близкий, который я нашел, был:

https://sendgrid.com/docs/ui/sending-email/using-handlebars/

И в нем говорится о «Базовом If, Else, Else If», что предполагает наличие более продвинутой версии, но я не могу найти документацию для нее….

Кто-нибудь знает, что я делаю не так?

PS: мои примеры упрощены только для этого поста.

Ответ №1:

Похоже, что документация SendGrid использует только Basic If... для отличия от следующего раздела If с Root. Они использовали похожие названия в разделах выше по странице.

Исходя из этого, не похоже, что у них есть логика для «if value equals», просто «if field exists», поэтому вам нужно будет обновить свой JSON, чтобы использовать этот формат, такой как у них в более поздних примерах.

Ответ №2:

Что вам нужно, так это следующая конструкция:

 {{#equals city_code avl}}
        AVL
{{else}}
        Not AVL
{{/equals}}
  

Смотрите https://sendgrid.com/docs/for-developers/sending-email/using-handlebars/#conditional-statements.

{{if anything}} проверяет только, является anything ли это правдой или ложью; вы не можете сравнить это с чем-либо.