diff options
author | José Valim <jose.valim@gmail.com> | 2011-12-08 20:59:43 +0100 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2011-12-08 21:00:34 +0100 |
commit | ebd71fd0e39abf495bdf64e3e6d278340c17e5ea (patch) | |
tree | cc770d6fe1f79c77bdd64134bf672ab5d56cf2b6 | |
parent | 94dcbe8115810b4545ca8011e6c1e5386cb1c842 (diff) | |
download | rails-ebd71fd0e39abf495bdf64e3e6d278340c17e5ea.tar.gz rails-ebd71fd0e39abf495bdf64e3e6d278340c17e5ea.tar.bz2 rails-ebd71fd0e39abf495bdf64e3e6d278340c17e5ea.zip |
Fix a regression and also fix broken test.
-rw-r--r-- | actionpack/lib/action_view/renderer/template_renderer.rb | 13 | ||||
-rw-r--r-- | actionpack/test/controller/new_base/render_layout_test.rb | 10 |
2 files changed, 14 insertions, 9 deletions
diff --git a/actionpack/lib/action_view/renderer/template_renderer.rb b/actionpack/lib/action_view/renderer/template_renderer.rb index 6bf91de05a..1771fb0063 100644 --- a/actionpack/lib/action_view/renderer/template_renderer.rb +++ b/actionpack/lib/action_view/renderer/template_renderer.rb @@ -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) diff --git a/actionpack/test/controller/new_base/render_layout_test.rb b/actionpack/test/controller/new_base/render_layout_test.rb index d3dcb5cad6..73c2d8244a 100644 --- a/actionpack/test/controller/new_base/render_layout_test.rb +++ b/actionpack/test/controller/new_base/render_layout_test.rb @@ -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 |