Hello.
I have tested such form:
================
After submitting my form:
<% raise params.inspect %>
{“myfield”=>“value1”, “action”=>“index”, “_submit”=>“OK”,
“controller”=>“params”}
<% raise request.cgi.params.inspect %>
{“myfield”=>[“value1”, “value2”], “_submit”=>[“OK”]}
================
In Rails source code I have found such code:
—> actionpack-1.13.5/lib/action_controller/cgi_ext/cgi_methods.rb
(line 23):
def parse_request_parameters(params)
parser = FormEncodedPairParser.new
params = params.dup
until params.empty?
for key, value in params
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))
params.delete key if value.empty?
else
raise TypeError, "Expected array, found #{value.inspect}"
end
end
end
parser.result
end
=============
Why from cgi-param type of array (for array with length 2 and more)
rails gets only first value?
