我是红宝石的新手。以下代码输出rubypage
参数:
cgi = CGI.new
puts cgi.params['rubypage']
但是,只要我将其改为此,就不会输出任何内容
cgi = CGI.new
puts cgi.params['rubypage']+"a"
为什么+"a"
的存在不会导致输出?如何将CGI params
元素与字符串连接?
答案 0 :(得分:1)
如果您检查其文档,您会发现CGI.params
返回Hash
,其参数名称为其键,参数值列出作为其值。这适用于可以多次指定相同查询参数的事实。
如果您只想为给定参数选择一个值,那么您可以索引到CGI对象本身,并且您应该能够在结果中附加一个字符串:
puts cgi['rubypage'] + "a"
或
puts "#{cgi['rubypage']}a"
如果你想要一个参数的所有值的数组,每个都附加相同的字符串,那么你可以这样做:
rubypageA = cgi.params['rubypage'].map do |value|
"#{value}a"
end
答案 1 :(得分:0)
你正在做的事情应该有效,取决于该params散列中的内容。
尝试使用irb进行简单测试:
$ irb
2.1.2 :001 > "string"+"another"
=> "stringanother"
2.1.2 :002 >
如果您打算做很多事情,Ruby's string interpolation可能会引起您的兴趣。
试试这个:
puts "#{cgi.params['rubypage']}a"
答案 2 :(得分:0)
cgi.params['rubypage']
是一个数组。您不能将字符串连接到数组。错误" TypeError:无法将String转换为数组"必须在某个地方登录。
答案 3 :(得分:0)
将以下内容添加到CGI脚本中:
require 'cgi'
$stdout.sync = true #Do not buffer output to STDOUT
$stderr.reopen($stdout) #Send errors to stdout(which goes to your browser)
然后将错误消息发送到您的浏览器,例如:
/usr/local/apache2/cgi-bin/myprog.rb:17:in `': no implicit conversion
of String into Array (TypeError)
如果您尝试在常规Ruby程序中执行以下操作,则会出现同样的错误:
[1, 2, 3] + 'a'
我读了一些关于cgi是90s的其他抱怨,这也意味着 cgi存在很多安全隐患?
任何网站都存在安全隐患。 CGI非常轻量级,所以如果你想做简单的事情(或定制的东西),它就没问题了。它是对网络编程的一个很好的介绍。