Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to make a layout template in Sinatra?

Tags:

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?

like image 790
maček Avatar asked Nov 16 '10 00:11

maček


People also ask

What is a LayOut template rails?

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.

What is Sinatra :: Base?

Sinatra::Base is the Sinatra without delegation. Consider the following code with delegation: # app.rb require 'sinatra' get '/' do render :template end.


2 Answers

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
like image 150
Phrogz Avatar answered Sep 21 '22 03:09

Phrogz


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.

like image 35
ocodo Avatar answered Sep 19 '22 03:09

ocodo