From e7c2c7982f25edcc359a3d6753bf41def1fc161e Mon Sep 17 00:00:00 2001 From: Rick Olson Date: Tue, 19 Dec 2006 04:41:57 +0000 Subject: [PATCH] Ensure render :json => ... skips the layout. Closes #6808 [Josh Peek] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5746 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/CHANGELOG | 2 ++ actionpack/lib/action_controller/layout.rb | 2 +- actionpack/test/controller/render_test.rb | 11 +++++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index c7cd0efd4b..d7dc6153b7 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Ensure render :json => ... skips the layout. Closes #6808 [Josh Peek] + * Fix HTML::Node to output double quotes instead of single quotes. Closes #6845 [mitreandy] * Correctly report which filter halted the chain. #6699 [Martin Emde] diff --git a/actionpack/lib/action_controller/layout.rb b/actionpack/lib/action_controller/layout.rb index f6d687bd10..0d0a843e33 100644 --- a/actionpack/lib/action_controller/layout.rb +++ b/actionpack/lib/action_controller/layout.rb @@ -266,7 +266,7 @@ def apply_layout?(template_with_options, options) def candidate_for_layout?(options) (options.has_key?(:layout) && options[:layout] != false) || - options.values_at(:text, :xml, :file, :inline, :partial, :nothing).compact.empty? && + options.values_at(:text, :xml, :json, :file, :inline, :partial, :nothing).compact.empty? && !template_exempt_from_layout?(default_template_name(options[:action] || options[:template])) end diff --git a/actionpack/test/controller/render_test.rb b/actionpack/test/controller/render_test.rb index b223862c9e..d364dd6c93 100644 --- a/actionpack/test/controller/render_test.rb +++ b/actionpack/test/controller/render_test.rb @@ -47,6 +47,10 @@ def render_json_hello_world_with_callback render_json({:hello => 'world'}.to_json, 'alert') end + def render_symbol_json + render :json => {:hello => 'world'}.to_json + end + def render_custom_code render_text "hello world", "404 Moved" end @@ -125,6 +129,7 @@ def determine_layout case action_name when "layout_test": "layouts/standard" when "builder_layout_test": "layouts/builder" + when "render_symbol_json": "layouts/standard" # to make sure layouts don't interfere end end end @@ -184,6 +189,12 @@ def test_do_with_render_json_with_callback assert_equal 'application/json', @response.content_type end + def test_do_with_render_symbol_json + get :render_symbol_json + assert_equal '{hello: "world"}', @response.body + assert_equal 'application/json', @response.content_type + end + def test_do_with_render_custom_code get :render_custom_code assert_response 404 -- GitLab