Fix a regression and also fix broken test.

This commit is contained in:
José Valim
2011-12-08 20:59:43 +01:00
parent 94dcbe8115
commit ebd71fd0e3
2 changed files with 14 additions and 9 deletions

View File

@@ -64,10 +64,15 @@ module ActionView
def resolve_layout(layout, keys)
case layout
when String
if layout =~ /^\//
with_fallbacks { find_template(layout, nil, false, keys, @details) }
else
find_template(layout, nil, false, keys, @details)
begin
if layout =~ /^\//
with_fallbacks { find_template(layout, nil, false, keys, @details) }
else
find_template(layout, nil, false, keys, @details)
end
rescue ActionView::MissingTemplate
all_details = @details.merge(:formats => @lookup_context.default_formats)
raise unless template_exists?(layout, nil, false, keys, all_details)
end
when Proc
resolve_layout(layout.call, keys)

View File

@@ -71,7 +71,8 @@ module ControllerLayouts
self.view_paths = [ActionView::FixtureResolver.new(
"layouts/application.html.erb" => "<html><%= yield %></html>",
"controller_layouts/mismatch_format/index.xml.builder" => "xml.instruct!",
"controller_layouts/mismatch_format/implicit.builder" => "xml.instruct!"
"controller_layouts/mismatch_format/implicit.builder" => "xml.instruct!",
"controller_layouts/mismatch_format/explicit.js.erb" => "alert('foo');"
)]
def explicit
@@ -94,10 +95,9 @@ module ControllerLayouts
assert_response XML_INSTRUCT
end
test "if an HTML template is explicitly provides for a JS template, an error is raised" do
assert_raises ActionView::MissingTemplate do
get :explicit, {}, "action_dispatch.show_exceptions" => false
end
test "a layout for JS is ignored even if explicitly provided for HTML" do
get :explicit, { :format => "js" }
assert_response "alert('foo');"
end
end
end