我有一个将JSON发送到客户端的AJAX,因此它可以在客户端呈现一个Mustache模板。 Mustache模板有部分。 一切都很顺利。我将借用here
中的示例示例11:部分(胡子的JS版本)
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 Strongache中的,第三个参数不存在。我已经看过Mustache的来源并且我已经调试了它,它与&#34; context&#34;有关。 of Moustache,但无法弄清楚如何在JS版本的Mustache中传递PARTIAL。
我试过了:
Mustache.render( mytemplate, { data: myjson, partial: mypartial })
但它没有渲染myjson
答案 0 :(得分:1)
在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实现有很好的文档记录,但主要是在源代码注释中。查看更多信息:)
https://github.com/mustache/mustache/blob/master/lib/mustache.rb#L6-L73