Структурирование шаблона макета в Haml
У меня есть веб-страница, которая использует Haml для макетов. Существует отдельный файл макета (layout.haml), который используется при рендеринге любой фактической страницы haml. Layout.haml выглядит примерно так:
-# layout.haml
!!! XML
!!!
%html
%head
...
%body
...
#content= yield
Проблема: это, конечно, уже в документе <body>
, поэтому манипулирование вещами в заголовке невозможно. Например, <title>
изменяется через @title
. Проблема в том, что каждый конкретный Javascript должен быть загружен в тело. Кроме того, layout.haml уже содержит Javascript, поэтому jQuery обычно создается несколько раз.
Любые предложения для лучшей структуры шаблонов?
Ответы
Ответ 1
Это решение предназначено только для Ruby on Rails:
Вы можете использовать yield(:location)
и content_for(:location)
методы, дополнительную информацию.
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!
Ответ 2
Я использую partials:
!!!
%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')