Views for Sinatra and Padrino
sinatra-views provides a view implementation inspired by Agavi to Sinatra and Padrino. This saves the hassle of implementing special functionality based on content types on your own.
Example
class MyApp < Sinatra::Base
register Sinatra::Views
get '/' do
#do something and retrieve @data
view :success
end
error NotFoundError do
view :error
end
view :success do
def html
render 'template'
end
def xml
@data.to_xml
end
def json
@data.to_json
end
end
view :error do
def html
status 404
render 'error_template'
end
def xml
status 404
end
def json
status 404
end
end
end
View names can be Arrays, so namespacing views is easy:
class MyApp
view :viewA, :success do
end
view :viewB, :success do
end
end
Padrino
Sinatra::Views is also available as a special extension for Padrino. Padrino users are advised to install and require padrino-views
and then register Padrino::Views
instead. This provides automatic namespacing by controller. Views defined within a controller will be used when calling view
inside a controller context. Views defined outside of a controller are global and can be accessed from everywhere, as long as there is no controller view of the same name.