从当前页面重定向到新页面

时间:2011-12-14 15:22:28

标签: ruby forms redirect cgi

我遇到一些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页面上方。

我希望这是有道理的。

1 个答案:

答案 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