[英]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.