下面是我的test.cgi文件。来自html的参数是:
{"FirstNum"=>["3"], "SecondNum"=>["3"]}
为什么a.class
不显示为整数?我需要对值进行数学运算,表单将它们作为整数发送。即使Ruby .to_i
也不起作用。
#!/RailsInstaller/Ruby2.1.0/bin/ruby
require 'cgi'
cgi = CGI.new
puts "Content-type: text/html\n\n"
arr = cgi.params
a = arr['FirstNum']
a.each do |a|
puts a.class
end
答案 0 :(得分:0)
来自fine manual:
方法
params()
以名称/值列表对的形式返回请求中所有参数的哈希值,其中value-list是一个包含一个或多个值的Array。 CGI对象本身也表现为值的参数名称哈希,但只返回每个参数名称的单个值(作为字符串)。
所以当你说:
arr = cgi.params
你在arr
得到一个Hash,其键是CGI参数名,其值是字符串数组; arr
在这里是一个坏名字,因为它是一个哈希,而不是一个数组。这意味着:
a = arr['FirstNum']
为您提供a
中的字符串数组。如果您只需要一个值,请使用[]
上的cgi
方法获取字符串,然后使用String#to_i
获取数字:
a = cgi['FirstNum'].to_i