Templates: render should fall back to engine layout #563
This commit is contained in:
parent
18fc8f9afd
commit
d8f1d8e566
|
@ -688,7 +688,8 @@ module Sinatra
|
||||||
views = options.delete(:views) || settings.views || "./views"
|
views = options.delete(:views) || settings.views || "./views"
|
||||||
layout = options.delete(:layout)
|
layout = options.delete(:layout)
|
||||||
eat_errors = layout.nil?
|
eat_errors = layout.nil?
|
||||||
layout = @default_layout if layout.nil? or layout == true
|
engine_layout = settings.send(engine)[:layout] if settings.respond_to?(engine)
|
||||||
|
layout = engine_layout || @default_layout if layout.nil? or layout == true
|
||||||
content_type = options.delete(:content_type) || options.delete(:default_content_type)
|
content_type = options.delete(:content_type) || options.delete(:default_content_type)
|
||||||
layout_engine = options.delete(:layout_engine) || engine
|
layout_engine = options.delete(:layout_engine) || engine
|
||||||
scope = options.delete(:scope) || self
|
scope = options.delete(:scope) || self
|
||||||
|
|
|
@ -34,6 +34,21 @@ class TemplatesTest < Test::Unit::TestCase
|
||||||
File.unlink(layout) rescue nil
|
File.unlink(layout) rescue nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'falls back to engine layout' do
|
||||||
|
mock_app do
|
||||||
|
template(:layout3) { 'Layout 3!<%= yield %>' }
|
||||||
|
set :erb, :layout => :layout3
|
||||||
|
|
||||||
|
get('/') do
|
||||||
|
erb('Hello World!', { :layout => true })
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
get '/'
|
||||||
|
assert ok?
|
||||||
|
assert_equal "Layout 3!Hello World!", body
|
||||||
|
end
|
||||||
|
|
||||||
it 'renders String templates directly' do
|
it 'renders String templates directly' do
|
||||||
render_app { render(:test, 'Hello World') }
|
render_app { render(:test, 'Hello World') }
|
||||||
assert ok?
|
assert ok?
|
||||||
|
|
Loading…
Reference in New Issue