I'm new to Sinatra and I can't figure out where to put my application layout.
I've seen the inline method that uses
# app code
__END__
@@layout
%html
= yield
But I'd like the layout to be in it's own .haml
file.
What should the layout file be named? What directory should it be placed in?
It's the place to define common look and feel of your final output. Layout files reside in app/views/layouts. Template is a general term for the view files. A view template - residing in app/views/ folder - would be rendered within a layout.
Sinatra::Base is the Sinatra without delegation. Consider the following code with delegation: # app.rb require 'sinatra' get '/' do render :template end.
To make every view default to be wrapped in a layout, create a file in views/layout.haml
and your calls to haml :myview
will automatically be wrapped in this layout.
If you want a particular view rendering not to use the layout, use:
get '/' do
# Other pages will use layout.haml, but not the main page
haml :home, :layout => false
end
If you want to use a layout other than the common layout, create another file (for example views/admin_layout.haml
) and then pass this as an option:
get '/admin/create' do
haml :create, :layout => :admin_layout
end
If you haven't already, create a folder where your sinatra script lives called...
views/
and put your layout in there, call your layout
layout.haml
or whatever extension (e.g. .erubis
) you'd like to use.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With