aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller/cgi_ext
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack/lib/action_controller/cgi_ext')
-rwxr-xr-xactionpack/lib/action_controller/cgi_ext/cgi_methods.rb13
1 files changed, 7 insertions, 6 deletions
diff --git a/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb b/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb
index 329a11969a..437a340b25 100755
--- a/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb
+++ b/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb
@@ -23,18 +23,19 @@ class CGIMethods #:nodoc:
def parse_request_parameters(params)
parser = FormEncodedPairParser.new
- finished = false
- until finished
- finished = true
+ params = params.dup
+ until params.empty?
for key, value in params
- next if key.blank?
- if !key.include?('[')
+ if key.blank?
+ params.delete key
+ elsif !key.include?('[')
# much faster to test for the most common case first (GET)
# and avoid the call to build_deep_hash
parser.result[key] = get_typed_value(value[0])
+ params.delete key
elsif value.is_a?(Array)
parser.parse(key, get_typed_value(value.shift))
- finished = false unless value.empty?
+ params.delete key if value.empty?
else
raise TypeError, "Expected array, found #{value.inspect}"
end