Структурирование макета шаблона в Haml - PullRequest
16 голосов
/ 12 декабря 2010

У меня есть веб-страница, которая использует Haml для макетов.Существует отдельный файл макета (layout.haml), который используется при рендеринге любой реальной страницы haml.Layout.haml выглядит примерно так:

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

Проблема: это, конечно, уже в документе <body>, поэтому манипулирование вещами в заголовке невозможно напрямую.Например, <title> изменяется с помощью @title.Еще одной проблемой является тот факт, что каждый Javascript для каждой страницы должен быть загружен в теле.Более того, layout.haml уже содержит Javascript, поэтому jQuery обычно создается несколько раз.

Есть предложения по улучшению структуры шаблона?

Ответы [ 2 ]

44 голосов
/ 12 декабря 2010

Это решение предназначено только для 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!
6 голосов
/ 12 декабря 2010

Я использую партиалы:

!!!
%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')
...