aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2014-02-06 01:03:41 -0200
committerRafael Mendonça França <rafaelmfranca@gmail.com>2014-02-06 01:03:41 -0200
commitc82dbc6a1c1a269fb21de8fd2722fc680ab7ea54 (patch)
treeec2733feb27a4102ec3707fb5e09b53a6156b182 /activesupport
parent7aa4b7dc6bd6ecea1f5009c5549ea69dd59d96d4 (diff)
downloadrails-c82dbc6a1c1a269fb21de8fd2722fc680ab7ea54.tar.gz
rails-c82dbc6a1c1a269fb21de8fd2722fc680ab7ea54.tar.bz2
rails-c82dbc6a1c1a269fb21de8fd2722fc680ab7ea54.zip
Fix to_query with empty arrays too
Diffstat (limited to 'activesupport')
-rw-r--r--activesupport/lib/active_support/core_ext/object/to_query.rb7
-rw-r--r--activesupport/test/core_ext/object/to_query_test.rb2
2 files changed, 8 insertions, 1 deletions
diff --git a/activesupport/lib/active_support/core_ext/object/to_query.rb b/activesupport/lib/active_support/core_ext/object/to_query.rb
index 5d5fcf00e0..37352fa608 100644
--- a/activesupport/lib/active_support/core_ext/object/to_query.rb
+++ b/activesupport/lib/active_support/core_ext/object/to_query.rb
@@ -18,7 +18,12 @@ class Array
# ['Rails', 'coding'].to_query('hobbies') # => "hobbies%5B%5D=Rails&hobbies%5B%5D=coding"
def to_query(key)
prefix = "#{key}[]"
- collect { |value| value.to_query(prefix) }.join '&'
+
+ if empty?
+ nil.to_query(prefix)
+ else
+ collect { |value| value.to_query(prefix) }.join '&'
+ 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 a892471e0f..f887a9e613 100644
--- a/activesupport/test/core_ext/object/to_query_test.rb
+++ b/activesupport/test/core_ext/object/to_query_test.rb
@@ -55,6 +55,8 @@ class ToQueryTest < ActiveSupport::TestCase
{ p: 12, b: { c: false, e: nil, f: '' } }
assert_query_equal 'b%5Bc%5D=3&b%5Bf%5D=&b%5Bk%5D=',
{ b: { c: 3, k: {}, f: '' } }
+ assert_query_equal 'a%5B%5D=&b=3',
+ {a: [], b: 3}
end
private