[英]ruby Mustache.render does not have 3rd parameter for partials like JS Mustache.render
我有一個將 JSON 發送到客戶端的 AJAX,因此它可以在客戶端呈現一個 Mustache 模板。 Mustache 模板有一個部分。 一切順利。 我將從這里借用這個例子
示例 11:部分(JS 版本的 Mustache)
var data = { depts: [
{ name: "Engineering",
employees: [
{firstName: "Christophe", lastName: "Coenraets"},
{firstName: "John", lastName: "Smith"}]
},
{ name: "Sales",
employees: [
{firstName: "Paula", lastName: "Taylor"},
{firstName: "Lisa", lastName: "Jones"}]
}]
};
var tpl = "{{#depts}}<h1>{{name}}</h1>" +
"<ul>{{#employees}}{{>employee}}{{/employees}}</ul>{{/depts}}";
var partials = {employee: "<li>{{firstName}} {{lastName}}</li>"};
var html = Mustache.render(tpl, data, partials);
$('#sampleArea').html(html);
正如您在對Mustache.render
的調用中所見,有第三個參數可以傳遞 PARTIALS,在 JS 中效果很好。
我需要在 Ruby 中做完全相同的事情,但問題是,在 Ruby Mustache 中,第三個參數不存在。 我已經看到了 Mustache 源代碼並且我已經調試了它,它與 Mustache 的“上下文”有關,但無法弄清楚如何像 Mustache 的 JS 版本那樣傳遞 PARTIAL。
我試過了:
Mustache.render( mytemplate, { data: myjson, partial: mypartial })
但它不會呈現 myjson
在 Ruby 實現中,局部文件由Mustache.partial
從文件系統加載,默認情況下,它會檢查當前目錄中名為mypartial.mustache
的文件。 您可以根據自己的特定需求通過繼承 Mustache 來覆蓋默認行為:
class MyMustache < Mustache
PARTIALS = {
employee: "<li>{{firstName}} {{lastName}}</li>"
}
def partial(name)
PARTIALS[name.to_sym]
end
end
puts MyMustache.render(tpl, data)
Ruby 實現的文檔非常好,但主要在源代碼注釋中。 查看更多信息:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.