aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--actionpack/CHANGELOG2
-rwxr-xr-xactionpack/lib/action_controller/cgi_ext/cgi_methods.rb2
-rwxr-xr-xactionpack/test/controller/cgi_test.rb5
3 files changed, 8 insertions, 1 deletions
diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG
index 5923f0c6f8..081abbd11a 100644
--- a/actionpack/CHANGELOG
+++ b/actionpack/CHANGELOG
@@ -1,5 +1,7 @@
*SVN*
+* Arrays sent via multipart posts are converted to strings #1032 [dj@omelia.org]
+
* render(:layout => true) is a synonym for render(:layout => nil)
* Make sure the benchmarking render method always returns the output of the render.
diff --git a/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb b/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb
index 0884d0ab89..59439cf8e5 100755
--- a/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb
+++ b/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb
@@ -69,7 +69,7 @@ class CGIMethods #:nodoc:
# Value as part of a multipart request
value.read
elsif value.class == Array
- value
+ value.collect { | e | e.respond_to?(:read) ? e.read : e }
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 dbdf6a5b96..f0058d2bf8 100755
--- a/actionpack/test/controller/cgi_test.rb
+++ b/actionpack/test/controller/cgi_test.rb
@@ -94,12 +94,16 @@ class CGITest < Test::Unit::TestCase
input = {
"something" => [ StringIO.new("") ],
+ "array_of_stringios" => [[ StringIO.new("One"), StringIO.new("Two") ]],
+ "mixed_types_array" => [[ StringIO.new("Three"), "NotStringIO" ]],
"products[string]" => [ StringIO.new("Apple Computer") ],
"products[file]" => [ mock_file ]
}
expected_output = {
"something" => "",
+ "array_of_stringios" => ["One", "Two"],
+ "mixed_types_array" => [ "Three", "NotStringIO" ],
"products" => {
"string" => "Apple Computer",
"file" => mock_file
@@ -169,3 +173,4 @@ class CGITest < Test::Unit::TestCase
assert_equal expected, CGIMethods.parse_request_parameters(input)
end
end
+