diff --git a/lib/action_controller/serialization.rb b/lib/action_controller/serialization.rb index b795df83..2c9d727f 100644 --- a/lib/action_controller/serialization.rb +++ b/lib/action_controller/serialization.rb @@ -41,7 +41,7 @@ module ActionController def _render_option_json(json, options) if json.respond_to?(:to_ary) - options[:root] ||= controller_name + options[:root] ||= controller_name unless options[:root] == false end serializer = options.delete(:serializer) || diff --git a/test/serialization_test.rb b/test/serialization_test.rb index 15449e0b..d382f2ce 100644 --- a/test/serialization_test.rb +++ b/test/serialization_test.rb @@ -140,6 +140,11 @@ class RenderJsonTest < ActionController::TestCase render :json => HypermediaSerializable.new end + def render_json_array_with_no_root + render :json => [], :root => false + end + + private def default_serializer_options if params[:check_defaults] @@ -250,4 +255,9 @@ class RenderJsonTest < ActionController::TestCase get :render_json_with_links assert_match '{"link":"http://www.nextangle.com/hypermedia"}', @response.body end + + def test_render_json_array_with_no_root + get :render_json_array_with_no_root + assert_equal '[]', @response.body + end end