我有一个使用Haml进行布局的网页。 “ layout.haml”是一个单独的布局文件,在呈现任何实际的Haml页面时使用。
layout.haml看起来像:
-# layout.haml
!!! XML
!!!
%html
%head
...
%body
...
#content= yield
这当然已经在文档的<body>
中,因此无法直接在标头中进行操作。例如,通过<title>
更改@title
。一个更大的问题是,每个页面特定的JavaScript都需要加载到主体中。此外,layout.haml已经包含JavaScript,因此jQuery通常被实例化多次。
是否有任何关于更好的模板结构的建议?
此解决方案仅适用于Ruby on Rails:
您可以使用yield(:location)
和content_for(:location)
方法。 “ Using the content_for
Method”具有更多信息。
layout.haml:
content_for
view.haml:
!!!
%html
%head
%title= yield(:title)
= yield(:head)
%body
= yield
我使用局部变量:
- content_for(:title, 'My title')
- content_for(:head) do
= javascript_include_tag :foo
%h1 My view!