2015-04-12 54 views
1

使用Mandrill API發送事務通訊時遇到問題。我選擇了Handlebars作爲模板參數。用戶名顯示正確,但列表中的數據(帖子標題)是空的。請幫助指出我做錯了什麼。謝謝!Mandrill API與Handlebars「each-loop」不起作用

的模板下面,發送到端點/messages/send.json

func genHTMLTemplate() string { 
    return "code generated template<br>" + 
     "Hi {{name}}, <br>" + 
     "{{#each posts}}<div>" + 
     "TITLE {{title}}, THIS {{this}}<br>" + 
     "</div>{{/each}}" 
} 

的API日誌在mandrillapp.com我的設置面板顯示的參數:

{ 
"key": "xxxxxxxxxx", 
"message": { 
     : 
    "merge_language": "handlebars", 
    "global_merge_vars": null, 
    "merge_vars": [ 
     { 
      "rcpt": "[email protected]", 
      "vars": [ 
       { 
        "name": "posts", 
        "content": [ 
         { 
          "title": "title A" 
         }, 
         { 
          "title": "title B" 
         }, 
        ] 
       }, 
       { 
        "name": "name", 
        "content": "John Doe" 
       } 
      ] 
     } 
    ], 
     : 
    }, 
    : 
} 

及以下的電子郵件接收。 「標題A」和「標題B」預計在「標題」之後。

code generated template 
Hi John Doe, 
TITLE, THIS Array 
TITLE, THIS Array 

回答

1

與山魈的示例代碼here測試後,我發現鑰匙「稱號」是行不通的。不知道原因(Mandrill的保留關鍵字?),但將其替換爲「title1」,「titleX」或其他可正確呈現的內容。

{ 
    "name": "posts", 
    "content": [ 
     { 
      "title": "blah blah" // "title1" or something else works 
     }, 
} 
1

同時使用把手作爲合併的語言「稱號」是在車把,讓您的文字標題情況下使用預留的helperName。如果您只默認{{title}},則會將空文本視爲標題。嘗試給它{{title title}}這應該工作或更改密鑰名稱爲其他(如果你不希望你的標題在標題的情況下)

2

山魈決定與一些可怕的,可怕的名字創建自定義車把助手:

https://mandrill.zendesk.com/hc/en-us/articles/205582537-Using-Handlebars-for-Dynamic-Content#inline-helpers-available-in-mandrill

titleurl一定會讓你悲傷,如果你的對象恰好有一個名爲titleurl以及密鑰。爲什麼他們沒有給他們的助手命名,比如toTitleCaseencodeUrl就超出了我的意思。

就陣列和#each而言,您可以使用{{this.title}}而不是{{title}}來解決此問題。