【发布时间】:2011-12-18 09:08:19
【问题描述】:
我遇到了一些 Ruby CGI 问题。
我有一个混合了 HTML 和 Ruby 的主页 (index.cgi),其中有一个登录表单。
点击提交按钮后,POST 的操作是同一页面 (index.cgi),此时我检查以确保用户已将数据输入到正确的字段中。
我有一个计数器,每当一个字段为空时,计数器就会增加 1。如果此计数器为 0,我想将当前加载的页面更改为 contents.html 之类的内容。
有了这个,我有:
if ( errorCount > 0 )
do nothing
else
....
end
我需要把什么放在我有 .... 的地方?
很遗憾,我不能使用任何框架,因为这是用于大学课程的,所以必须使用基础 Ruby。
至于按照您的建议使用 CGI#header 方法,我已尝试使用此方法,但它不适合我。
如前所述,我的页面是 index.cgi。这是由使用“here doc”语句的 Ruby 和 HTML 混合而成的。
在我的代码页顶部有我的 shebang 行,后面是 HTML 标题语句。
然后我执行 CGI 表单验证部分,在此我尝试执行以下操作: print this.cgi( { 'Status' => '302 Moved', 'location' => '{http://localhost:10000/contents.html' })
所发生的只是这一行打印在浏览器窗口的顶部,在我的 index.cgi 页面上方。
我希望这是有道理的。
【问题讨论】:
-
没有看到源代码,我们帮助您的能力是有限的。
-
您必须在任何其他输出之前发送标头,否则 CGI 将为您创建默认标头。我用一个非常简单的例子的链接更新了我的答案。
-
Gioele,非常感谢您的帮助。我犯了一个愚蠢的错误,将“ puts "Content-Type: text/html\n\n" 放在我的文件顶部。我现在将它移到了我的表单验证脚本(它有重定向语句)下面,它可以工作了。