aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2006-08-26 02:49:09 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2006-08-26 02:49:09 +0000
commit04fda65306e5779d89a93ec3e9e7cf8541ead144 (patch)
treeeef94d964ba349a2a4ff71d0ae0295b4149a1ff0
parent9e054fdf417078763e80ba975dde5672017ebf9f (diff)
downloadrails-04fda65306e5779d89a93ec3e9e7cf8541ead144.tar.gz
rails-04fda65306e5779d89a93ec3e9e7cf8541ead144.tar.bz2
rails-04fda65306e5779d89a93ec3e9e7cf8541ead144.zip
Changed the POST parameter processing to use the new QueryStringParser and make the result a indifferent hash [DHH]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4821 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
-rw-r--r--actionpack/CHANGELOG2
-rwxr-xr-xactionpack/lib/action_controller/cgi_ext/cgi_methods.rb2
-rw-r--r--actionpack/lib/action_controller/cgi_process.rb2
-rwxr-xr-xactionpack/test/controller/cgi_test.rb5
4 files changed, 7 insertions, 4 deletions
diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG
index 756778f5e0..e1775a8b34 100644
--- a/actionpack/CHANGELOG
+++ b/actionpack/CHANGELOG
@@ -1,5 +1,7 @@
*SVN*
+* Changed the POST parameter processing to use the new QueryStringParser and make the result a indifferent hash [DHH]
+
* Add UrlWriter to allow writing urls from Mailers and scripts. [Nicholas Seckar]
* Clean up and run the Active Record integration tests by default. #5854 [kevin.clark@gmail.com, 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 5f4f8d80d5..0bd6ae5bdd 100755
--- a/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb
+++ b/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb
@@ -156,7 +156,7 @@ class CGIMethods #:nodoc:
end
- return result
+ return result.with_indifferent_access
end
# Skip over the current term by scanning past the next &, or to
diff --git a/actionpack/lib/action_controller/cgi_process.rb b/actionpack/lib/action_controller/cgi_process.rb
index e983912158..d409c66a8a 100644
--- a/actionpack/lib/action_controller/cgi_process.rb
+++ b/actionpack/lib/action_controller/cgi_process.rb
@@ -68,7 +68,7 @@ module ActionController #:nodoc:
if ActionController::Base.param_parsers.has_key?(content_type)
CGIMethods.parse_formatted_request_parameters(content_type, @env['RAW_POST_DATA'])
else
- CGIMethods.parse_request_parameters(@cgi.params)
+ CGIMethods.parse_query_parameters(@env['RAW_POST_DATA'] || "")
end
end
diff --git a/actionpack/test/controller/cgi_test.rb b/actionpack/test/controller/cgi_test.rb
index 174fe96952..be0ed1feef 100755
--- a/actionpack/test/controller/cgi_test.rb
+++ b/actionpack/test/controller/cgi_test.rb
@@ -27,7 +27,9 @@ class CGITest < Test::Unit::TestCase
end
def test_deep_query_string
- assert_equal({'x' => {'y' => {'z' => '10'}}}, CGIMethods.parse_query_parameters('x[y][z]=10'))
+ expected = {'x' => {'y' => {'z' => '10'}}}
+ assert_equal(expected, CGIMethods.parse_query_parameters('x[y][z]=10'))
+ assert_equal("10", CGIMethods.parse_query_parameters('x[y][z]=10')[:x][:y][:z])
end
def test_deep_query_string_with_array
@@ -38,7 +40,6 @@ class CGITest < Test::Unit::TestCase
def test_deep_query_string_with_array_of_hash
assert_equal({'x' => {'y' => [{'z' => '10'}]}}, CGIMethods.parse_query_parameters('x[y][][z]=10'))
assert_equal({'x' => {'y' => [{'z' => '10', 'w' => '10'}]}}, CGIMethods.parse_query_parameters('x[y][][z]=10&x[y][][w]=10'))
- assert_equal({'x' => [{'y' => {'z' => '10', 'w' => '10'}}]}, CGIMethods.parse_query_parameters('x[][y][z]=10&x[][y][w]=10'))
end
def test_deep_query_string_with_array_of_hashes_with_one_pair