Как сделать макет шаблона в Синатре? - PullRequest
20 голосов
/ 16 ноября 2010

Я новичок в Синатре и не могу понять, где разместить макет приложения.

Я видел встроенный метод, который использует

# app code    
__END__

@@layout
  %html
    = yield

Но я бы хотел, чтобы макет был в отдельном .haml файле.

Как должен называться файл макета? В каком каталоге он должен быть размещен?

Ответы [ 2 ]

26 голосов
/ 17 ноября 2010

Автоматическая упаковка

Чтобы сделать все представления по умолчанию обернутыми в макет, создайте файл в views/layout.haml, и ваши вызовы haml :myview будут автоматически перенесены в этот макет.

Пропуск макета

Если вы хотите, чтобы при конкретном рендеринге вида не использовался макет, используйте:

get '/' do
   # Other pages will use layout.haml, but not the main page
   haml :home, :layout => false
end

Использование другого макета

Если вы хотите использоватьмакет, отличный от общего макета, создайте другой файл (например, views/admin_layout.haml) и передайте его как параметр:

get '/admin/create' do
   haml :create, :layout => :admin_layout
end
20 голосов
/ 16 ноября 2010

Если вы этого еще не сделали, создайте папку, в которой живет ваш сценарий sinatra, с именем ...

views/

и поместите туда свой макет, назовите свой макет

layout.haml

или любое другое расширение (например, .erubis), которое вы хотите использовать.

...