Кажется, что вы хотите шаблон макета. Я сделал это сам с давних пор с синатрой, и это действительно удобно. Поместите общий материал, который вы хотите, в 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
Я думаю, что это то, что вам нужно. Это действительно в документах синатра, но не в разделе о хамле. Он работает так, независимо от того, какой шаблонный движок вы используете.
Если вы не ищете параметризованные шаблоны, то что? для чего тебе это? – froderik
Организация кода/шаблона и не повторяется. У меня есть что-то, что должно появиться в нескольких шаблонах (скрипты, заголовок, нижний колонтитул и т. Д.) – user492922
Есть ли у шаблона * * изменение * в зависимости от параметров? –