我遇到一些Ruby CGI问题。
我有一个主页(index.cgi
),它混合了HTML和Ruby,并且里面有一个登录表单。
点击“提交”按钮后,POST的操作是同一页面(index.cgi
),此时我会检查以确保用户已将数据输入到正确的字段中。
我有一个计数器,每当一个字段留空时它会增加1。如果此计数器为0,我想将当前加载的页面更改为contents.html。
有了这个,我有:
if ( errorCount > 0 )
do nothing
else
....
end
我需要把它放在哪里....?
不幸的是我不能使用任何框架,因为这是用于大学课程,所以必须使用基础Ruby。
至于你所建议的使用CGI#header方法,我尝试过使用它但不适用于我。
如前所述,我的页面是index.cgi。这是由Ruby和HTML混合使用“here doc”语句。
在我的代码页顶部,我有一个shebang行,后跟一个HTML标题声明。
然后我做了CGI表格验证部分,在此我尝试过这样的事情:print this.cgi({'Status'=>'302 Moved','location'=> '{http:// localhost:10000 / contents.html'})
所有发生的事情都是这一行打印在浏览器窗口的顶部,在我的index.cgi页面上方。
我希望这是有道理的。
答案 0 :(得分:1)
要将浏览器重定向到另一个URL,您必须输出包含Location: /foo/bar
标头的30X HTTP响应。您可以使用CGI#header
方法执行此操作。
我建议您使用一个简单的框架作为Sinatra,或者至少将您的脚本编写为Rack兼容的应用程序,而不是处理您尚未掌握的这些细节。
如果你真的需要使用裸CGI类,请看一下这个简单的例子:https://github.com/tdtds/amazon-auth-proxy/blob/master/amazon-auth-proxy.cgi。