繁体   English   中英

ruby Mustache.render 没有像 JS Mustache.render 这样的部分的第三个参数

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM