簡體   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