我有一个使用Haml进行布局的网页.有一个单独的布局文件(layout.haml),在渲染任何实际的haml页面时使用.layout.haml看起来像
-# layout.haml
!!! XML
!!!
%html
%head
...
%body
...
#content= yield
Run Code Online (Sandbox Code Playgroud)
问题:这当然已经在文档中了,<body>因此在标题中操作事物是不可能的.例如<title>改变通过@title.什么是更多的问题是每个页面特定的Javascript需要在正文中加载.而且layout.haml已经包含Javascript,因此jQuery通常被多次实例化.
有关更好的模板结构的任何建议吗?
tjw*_*ace 44
此解决方案仅适用于Ruby on Rails:
您可以使用yield(:location)和content_for(:location)方法,更多信息.
layout.haml
!!!
%html
%head
%title= yield(:title)
= yield(:head)
%body
= yield
Run Code Online (Sandbox Code Playgroud)
view.haml
- content_for(:title, 'My title')
- content_for(:head) do
= javascript_include_tag :foo
%h1 My view!
Run Code Online (Sandbox Code Playgroud)
我使用偏见:
!!!
%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')
Run Code Online (Sandbox Code Playgroud)