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

标签 javascript ruby-on-rails ruby mustache partials

我有一个 AJAX,可以将 JSON 发送到客户端,因此它可以在客户端呈现 Mustache 模板。 Mustache 模板有一个部分。 一切都很顺利。我借用here中的例子

示例 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 的“上下文”有关,但无法弄清楚如何像 JS 版本的 Mustache 中那样传递 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 实现的文档非常齐全,但大部分都在源代码注释中。查看更多信息:)

Source

关于javascript - ruby Mustache.render 没有像 JS Mustache.render 这样的局部参数的第三个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28364958/

相关文章:

javascript - 复制图片路径点击即可

javascript - Firebase Auth 登录区别

Javascript 事件,捕获作品冒泡不会

ruby-on-rails - 如何存储与餐厅关联的城市和社区?

ruby - 如何在 Ruby 中打开进程的 STDIN?

javascript - 为什么 Flux 中的单例 Store 会导致服务器端渲染出现问题

ruby-on-rails - 如何在 Rails 中将所有迁移文件转换为单个文件?

ruby-on-rails - 在 Rails 上使用 'rinruby' gem 时,我目前无法使用 png ("path/to/file.png") & dev.off() 将热图等转储到文件夹中

android - 使用 Ruby 向 Firebase 发送通知

Ruby:散列键的属性