如何使用Sinatra为Mustache中的页面和部分设置单独的(或多个)模板路径?

时间:2013-12-03 18:21:37

标签: ruby sinatra mustache

我设置了模板路径:

class Mustache
  self.template_path = 'templates/pages'
end

这很好用。

但是,我想将部分内容存储在一个单独的文件夹中:templates/partials

小胡子模板如下所示:

Hello {{ name }}
Your info: {{> info }

info.mustache是部分内容。

info partial没有类,所以我无法设置self.template_path

那么,如何为部分路径设置模板路径,或者有多个模板路径?

self.template_path = 'templates'
self.template_path = 'templates/'
self.template_path = 'templates/*'
self.template_path = 'templates/**'
self.template_path = [ 'templates/pages', 'templates/partials' ]

没用。

1 个答案:

答案 0 :(得分:1)

你做不到。如果查看此文件,您会看到只能设置模板路径。部分在渲染过程中最终使用相同的路径。

https://github.com/defunkt/mustache/blob/master/lib/mustache/settings.rb

但是,如果您将部分{{> partials / info}}命名为,则会在模板路径中找到info.mustache(templates / partials / info.mustache)。

你也可以像这样覆盖mustache.rb中的partial方法:

class Fubar < Mustache
  def partial(name)
    partial_name = "partials/#{name}"
    super(partial_name)
  end
end

最后,部分与任何其他模板没有区别。您想要的路径仅用于组织目的。

另一位用户提出了一个很好的观点,即现在可以保持小胡子。有一个时间点,原始贡献者已停止支持它。我很高兴有人接受了这个项目。