diff options
author | Mark Reginald James <mrj@advancedcontrols.com.au> | 2008-12-28 01:15:48 +0000 |
---|---|---|
committer | Frederick Cheung <frederick.cheung@gmail.com> | 2008-12-28 01:15:48 +0000 |
commit | 5138f755ff31a8f317d649a6f256c74bc371db70 (patch) | |
tree | ac50b3fb5b021e36826ceca1097e3eb101de94c3 /actionpack/lib/action_controller/url_encoded_pair_parser.rb | |
parent | afdec83ed543e904b495d3225b6401101ea7ba6c (diff) | |
download | rails-5138f755ff31a8f317d649a6f256c74bc371db70.tar.gz rails-5138f755ff31a8f317d649a6f256c74bc371db70.tar.bz2 rails-5138f755ff31a8f317d649a6f256c74bc371db70.zip |
Fixed incorrect parsing of query parameters with mixed-depth nesting inside an array [#1622 state:resolved]
Signed-off-by: Frederick Cheung <frederick.cheung@gmail.com>
Diffstat (limited to 'actionpack/lib/action_controller/url_encoded_pair_parser.rb')
-rw-r--r-- | actionpack/lib/action_controller/url_encoded_pair_parser.rb | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/actionpack/lib/action_controller/url_encoded_pair_parser.rb b/actionpack/lib/action_controller/url_encoded_pair_parser.rb index bea96c711d..9883ad0d85 100644 --- a/actionpack/lib/action_controller/url_encoded_pair_parser.rb +++ b/actionpack/lib/action_controller/url_encoded_pair_parser.rb @@ -70,11 +70,12 @@ module ActionController top[-1][key] = value else top << {key => value}.with_indifferent_access - push top.last - value = top[key] end + push top.last + return top[key] else top << value + return value end elsif top.is_a? Hash key = CGI.unescape(key) @@ -84,12 +85,10 @@ module ActionController else raise ArgumentError, "Don't know what to do: top is #{top.inspect}" end - - return value end def type_conflict!(klass, value) raise TypeError, "Conflicting types for parameter containers. Expected an instance of #{klass} but found an instance of #{value.class}. This can be caused by colliding Array and Hash parameters like qs[]=value&qs[key]=value. (The parameters received were #{value.inspect}.)" end end -end
\ No newline at end of file +end |