Вложенные макеты шаблонов ERB, такие как Liquid?

С помощью Liquid вы можете вкладывать макеты. Например, мой сайт макет по умолчанию основан на базовый макет.

Возможно ли это с помощью ERB? Если да, то как?

Я спрашиваю, потому что я переношу сайт GitHub Pages на Sinatra, чтобы я мог обрабатывать формы изначально (а не с помощью Wufoo или Google Формы).


person ma11hew28    schedule 02.01.2011    source источник
comment
Вы имеете в виду, как это сделать в HAML? Так как у Sinatra есть поддержка Liquid.   -  person Paul Hoffer    schedule 06.02.2011
comment
@phoffer да, хотя сейчас мне интересно, как это сделать в ERB (но HAML тоже был бы крут), я отредактировал вопрос, чтобы он имел больше смысла.   -  person ma11hew28    schedule 01.10.2011


Ответы (1)


попробуй это:

создайте файл с именем layout.haml (или erb, или любой другой файл, в котором находятся ваши шаблоны) и поместите его в папку представлений. это макет вашего сайта, и он может выглядеть так (я использую haml):

 %html
  %head 
    %link(rel="stylesheet" type="text/css" href="style.css")  
  %body
    %div.outer
      %div.inner
        = yield

волшебная часть - это =yield, где Синатра будет отображать любой шаблон, который вы вызываете в своем маршруте. = говорит вашему шаблону ожидать код ruby.

например, если ваш маршрут

get '/' do 
  haml :index
end

тогда ваш шаблон в /views/index.haml будет вставлен. вы также можете использовать пользовательский макет, если вы укажете своему шаблону переопределить макет в /views/layout.haml.

надеюсь это поможет.

person corneliusk    schedule 22.03.2011
comment
Да, это показывает, как использовать один файл макета. Но как вложить два или более файла макета? Пожалуйста, перечитайте мой вопрос, поскольку я его исправил. - person ma11hew28; 01.10.2011