2013-12-03 5 views
0

Как включить файл haml в haml? Это не описано в документах. (This question рассказывает о вставке параметризованных шаблонов, но это не то, что я ищу.)Как включить файл haml в haml?

Я использую Sinatra, но я надеюсь, что это не имеет значения.

Вставить простой HTML-код проще?

+0

Если вы не ищете параметризованные шаблоны, то что? для чего тебе это? – froderik

+0

Организация кода/шаблона и не повторяется. У меня есть что-то, что должно появиться в нескольких шаблонах (скрипты, заголовок, нижний колонтитул и т. Д.) – user492922

+0

Есть ли у шаблона * * изменение * в зависимости от параметров? –

ответ

1

Кажется, что вы хотите шаблон макета. Я сделал это сам с давних пор с синатрой, и это действительно удобно. Поместите общий материал, который вы хотите, в views/layout.haml - это, скорее всего, полный HTML-документ с головой и телом и всеми вещами, которые будут одинаковыми на данной странице.

%head 
    -# some head tags here 
%body 
    -# header menu here 
    = yield 
    -# a bit footer here 

Выходная часть - это то, где вы хотите иметь то, что отличается между страницами. (Он использует встроенный метод Ruby yield для выполнения блока, который был передан. Если вы знакомы с Ruby, вы знаете, что это значит - иначе не думайте об этом слишком много, пока не получите что-то, что работает.)

Тогда в вашем коде синатра, который вы называете haml, вы просто делаете, как обычно, и синатра возьмет файл макета для вас.

haml :specific_page 

Если вы хотите быть более конкретным о том, где ваш макет можно передать в названном макете:

haml :specific_page, layout: :other_layout 

и он будет искать other_layout.haml вместо макета. Вы также можете отключить компоновку с:

haml :specific_page, layout: false 

Я думаю, что это то, что вам нужно. Это действительно в документах синатра, но не в разделе о хамле. Он работает так, независимо от того, какой шаблонный движок вы используете.

+0

Существует очень мало повторного использования между страницами, поэтому я действительно предпочел бы директиву% include, но, похоже, ее не существует. Ваш ответ - следующее лучшее, что я думаю. – user492922

+0

Я вроде как этот подход для макетов. :-) Почему вам не нравится метод «render»? http://haml.info/docs/yardoc/Haml/Engine.html#render-instance_method. Вам не нужно параметризовать его, если вы этого не хотите. – froderik

+1

визуализации, кажется, то, что я искал, спасибо! Я недостаточно внимательно прочитал другой вопрос. – user492922

Смежные вопросы