maček
maček

Reputation: 77778

How to make a layout template in Sinatra?

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?

Upvotes: 20

Views: 14936

Answers (2)

Phrogz
Phrogz

Reputation: 303251

Automatic Wrapping

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.

Skipping the 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

Using a Different Layout

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

Upvotes: 27

ocodo
ocodo

Reputation: 30248

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.

Upvotes: 20

Related Questions