diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index 7eb69f4fbdd5c32c8201bd5895a5fb9cc07993cb..9a75a3852c5eddb80efb17154e00df17af52870d 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Fix NoMethodError when parsing params like &&. [Adam Greenfield] + * Fix flip flopped logic in docs for url_for's :only_path option. Closes #4998. [esad@esse.at] * form.text_area handles the :size option just like the original text_area (:size => '60x10' becomes cols="60" rows="10"). [Jeremy Kemper] diff --git a/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb b/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb index 941646c5300ba6de933bc75da4122320ac8efc09..37eb8d5cd72404f9cf6b20326981204367797d7f 100755 --- a/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb +++ b/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb @@ -45,6 +45,7 @@ def CGIMethods.parse_request_parameters(params) parsed_params = {} for key, value in params + next if key.nil? value = [value] if key =~ /.*\[\]$/ unless key.include?('[') # much faster to test for the most common case first (GET) diff --git a/actionpack/test/controller/cgi_test.rb b/actionpack/test/controller/cgi_test.rb index ddf68fdf5bfec3702861bda8a45162dcabebda9d..06f721997db1300b64d0375a7dd619fcc82aaef1 100755 --- a/actionpack/test/controller/cgi_test.rb +++ b/actionpack/test/controller/cgi_test.rb @@ -227,6 +227,12 @@ def test_parse_params_with_unmatched_brackets_and_array expected = { "a/b@" => { "c" => { "d[e" => ["f"] }}} assert_equal expected, CGIMethods.parse_request_parameters(input) end + + def test_parse_params_with_nil_key + input = { nil => nil, "test2" => %w(value1) } + expected = { "test2" => "value1" } + assert_equal expected, CGIMethods.parse_request_parameters(input) + end end class MultipartCGITest < Test::Unit::TestCase