我有一个使用Haml进行布局的网页。有一个单独的布局文件(layout.haml),在渲染任何实际的haml页面时使用。 layout.haml看起来像
-# layout.haml
!!! XML
!!!
%html
%head
...
%body
...
#content= yield
问题:这当然已经在文档的<body>
中,因此不能直接操作标题中的内容。例如,<title>
通过@title
进行了更改。什么是更多的问题是每个页面特定的Javascript需要在正文中加载。此外,layout.haml已经包含Javascript,因此jQuery通常被多次实例化。
有关更好的模板结构的任何建议吗?
答案 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')