diff --git a/activesupport/lib/active_support/core_ext/object/to_param.rb b/activesupport/lib/active_support/core_ext/object/to_param.rb index e40846e7d677260cf236e76d350903b8c937fa5a..13be0038c23e6a66ff7681c27bf975ee777d91c9 100644 --- a/activesupport/lib/active_support/core_ext/object/to_param.rb +++ b/activesupport/lib/active_support/core_ext/object/to_param.rb @@ -51,9 +51,12 @@ class Hash # # This method is also aliased as +to_query+. def to_param(namespace = nil) - return (namespace ? nil.to_query(namespace) : '') if empty? - collect do |key, value| - value.to_query(namespace ? "#{namespace}[#{key}]" : key) - end.sort! * '&' + if empty? + namespace ? nil.to_query(namespace) : '' + else + collect do |key, value| + value.to_query(namespace ? "#{namespace}[#{key}]" : key) + end.sort! * '&' + end end end diff --git a/activesupport/test/core_ext/object/to_query_test.rb b/activesupport/test/core_ext/object/to_query_test.rb index 51275e36bf7c4dfa1a39bf25f89bc8e487230199..a892471e0f95a9a4b5376bb361634246ad9f60a3 100644 --- a/activesupport/test/core_ext/object/to_query_test.rb +++ b/activesupport/test/core_ext/object/to_query_test.rb @@ -47,6 +47,8 @@ def test_array_values_are_not_sorted end def test_nested_empty_hash + assert_equal '', + {}.to_query assert_query_equal 'a=1&b%5Bc%5D=3&b%5Bd%5D=', { a: 1, b: { c: 3, d: {} } } assert_query_equal 'b%5Bc%5D=false&b%5Be%5D=&b%5Bf%5D=&p=12',