如何在haml中包含haml文件?

时间:2013-12-03 20:24:53

标签: sinatra haml

如何在haml中包含haml文件?它没有在文档中描述。 (This question谈到插入参数化模板,但这不是我正在寻找的。)

我正在使用Sinatra,但我希望它没关系。

是否更容易插入纯HTML?

1 个答案:

答案 0 :(得分:1)

似乎你想要的是一个布局模板。我不久前和sinatra一起做了这个,这真的很方便。将您想要的常用内容放在views/layout.haml中 - 这可能是一个包含头部和正文的完整HTML文档以及在给定页面上所有相同的内容。

%head
  -# some head tags here
%body
  -# header menu here
  = yield
  -# a bit footer here

产量部分是您希望页面之间存在差异的地方。 (它使用内置的Ruby方法yield来执行已经传入的块。如果你熟悉Ruby,你就会知道这意味着什么 - 在你有一些有效的东西之前,不要想太多。)

然后在你的sinatra代码中,你打电话给haml,你就像平时那样做,sinatra将为你挑选布局文件。

haml :specific_page

如果您想更具体地说明布局的位置,可以传入命名布局:

haml :specific_page, layout: :other_layout

它会查找other_layout.haml而不是布局。您还可以使用以下命令关闭布局:

haml :specific_page, layout: false

我认为这就是你追求的目标。它实际上是在sinatra文档中,而不是关于haml的部分。无论你使用什么模板引擎,它都会像这样工作。