在Haml中构建布局模板

时间:2010-12-12 13:19:44

标签: ruby haml

我有一个使用Haml进行布局的网页。有一个单独的布局文件(layout.haml),在渲染任何实际的haml页面时使用。 layout.haml看起来像

-# layout.haml
!!! XML
!!!
%html
  %head
    ...
  %body
    ...
    #content= yield

问题:这当然已经在文档的<body>中,因此不能直接操作标题中的内容。例如,<title>通过@title进行了更改。什么是更多的问题是每个页面特定的Javascript需要在正文中加载。此外,layout.haml已经包含Javascript,因此jQuery通常被多次实例化。

有关更好的模板结构的任何建议吗?

2 个答案:

答案 0 :(得分:44)

此解决方案仅适用于Ruby on Rails:

您可以使用yield(:location)content_for(:location)方法,more information

layout.haml

!!!
%html
  %head
    %title= yield(:title)
    = yield(:head)
  %body
    = yield

view.haml

- content_for(:title, 'My title')
- content_for(:head) do
  = javascript_include_tag :foo

%h1 My view!

答案 1 :(得分:6)

我使用偏见:

!!!
%html
  = partial('trst_sys/shared/html-head')

  %body{:id => "srv",:'data-lang' => current_lang}
  #main.wrap
    %header#header
      = partial('trst_sys/shared/header')
    %nav#menu
      = partial('trst_sys/shared/menu')
    %section#content
      %article#xhr_content
        = yield
      %article#xhr_msg.hidden
    %section#sidebar
      = partial('trst_sys/shared/sidebar')
    %section#main_footer.wrap
  %footer#footer.wrap
    = partial('trst_sys/shared/footer')