diff options
author | Jamis Buck <jamis@37signals.com> | 2005-07-04 15:31:37 +0000 |
---|---|---|
committer | Jamis Buck <jamis@37signals.com> | 2005-07-04 15:31:37 +0000 |
commit | fcdcd9b9fa2f6fe37d2481b1b201fd24bf5b37c6 (patch) | |
tree | cecbd542a6b016feffdd3c284981495e4480652d | |
parent | cf9c991d4cdcf1cb9511d4b070ed83ca5cb5bc03 (diff) | |
download | rails-fcdcd9b9fa2f6fe37d2481b1b201fd24bf5b37c6.tar.gz rails-fcdcd9b9fa2f6fe37d2481b1b201fd24bf5b37c6.tar.bz2 rails-fcdcd9b9fa2f6fe37d2481b1b201fd24bf5b37c6.zip |
Hashes sent via multipart post should be converted to strings #1032 [me@julik.nl]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1664 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
-rw-r--r-- | actionpack/CHANGELOG | 2 | ||||
-rwxr-xr-x | actionpack/lib/action_controller/cgi_ext/cgi_methods.rb | 2 | ||||
-rwxr-xr-x | actionpack/test/controller/cgi_test.rb | 7 |
3 files changed, 9 insertions, 2 deletions
diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index 202da1d3b8..fe0700444d 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -125,7 +125,7 @@ * Add assertions with friendly messages to TestCase#process to ensure that @controller, @request, and @response are set. #1367 -* Arrays sent via multipart posts are converted to strings #1032 [dj@omelia.org] +* Arrays, hashes sent via multipart posts are converted to strings #1032 [dj@omelia.org, me@julik.nl] * render(:layout => true) is a synonym for render(:layout => nil) diff --git a/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb b/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb index dc1b1189b5..81bc4867de 100755 --- a/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb +++ b/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb @@ -70,7 +70,7 @@ class CGIMethods #:nodoc: # Value as part of a multipart request value.read elsif value.class == Array - value.collect { | e | e.respond_to?(:read) ? e.read : e } + value.collect { |v| CGIMethods.get_typed_value(v) } else # Standard value (not a multipart request) value.to_s diff --git a/actionpack/test/controller/cgi_test.rb b/actionpack/test/controller/cgi_test.rb index 1749eb0c80..1e4bb16337 100755 --- a/actionpack/test/controller/cgi_test.rb +++ b/actionpack/test/controller/cgi_test.rb @@ -1,3 +1,4 @@ +$:.unshift File.dirname(__FILE__) + "/../../lib" require 'test/unit' require 'action_controller/cgi_ext/cgi_methods' @@ -112,6 +113,7 @@ class CGITest < Test::Unit::TestCase "something" => [ StringIO.new("") ], "array_of_stringios" => [[ StringIO.new("One"), StringIO.new("Two") ]], "mixed_types_array" => [[ StringIO.new("Three"), "NotStringIO" ]], + "mixed_types_as_checkboxes[strings][nested]" => [[ mock_file, "String", StringIO.new("StringIO")]], "products[string]" => [ StringIO.new("Apple Computer") ], "products[file]" => [ mock_file ] } @@ -120,6 +122,11 @@ class CGITest < Test::Unit::TestCase "something" => "", "array_of_stringios" => ["One", "Two"], "mixed_types_array" => [ "Three", "NotStringIO" ], + "mixed_types_as_checkboxes" => { + "strings"=> { + "nested"=>[ mock_file, "String", "StringIO" ] + }, + }, "products" => { "string" => "Apple Computer", "file" => mock_file |