ruby - redirect_to(url,:myparam =>'abc')

时间:2012-08-16 09:17:30

标签: ruby-on-rails param redirecttoaction

我无法解决这个问题。

url = "www.mysite.com/?param1=abc"

redirect_to(url, :param2 => 'xyz')

### Should this go to - www.mysite.com/?param1=abc&param2=xyz

或者我错过了什么?它似乎不起作用?

3 个答案:

答案 0 :(得分:8)

来自documentation

  

redirect_to(options = {},response_status = {})

     

将浏览器重定向到选项中指定的目标。这个   参数可以采用以下三种形式之一:

     

哈希 - 将通过使用选项调用url_for来生成URL。

     

记录 - 将通过调用url_for生成URL   选项,它将引用该记录的命名URL。

     

以protocol://开头的字符串(如http://)或协议相对   引用(如//) - 作为目标直接传递   重定向。

你传递一个String作为第一个参数,所以它使用第三个选项。您的第二个参数被解释为response_status参数的值。

因此,如果您的重定向是内部重定向(到同一个应用程序),则无需指定方案和主机名。只需使用

redirect_to root_url(param1 => 'abc', param2 => 'xyz')

如果是外部网址,请在重定向之前构建完整网址:

url = "www.mysite.com/?param1=abc&params2=xyz"
redirect_to url

答案 1 :(得分:3)

redirect_to不是Ruby函数,但通常用于Ruby on Rails。您可以通过大量工作示例找到其文档here

如果您想在纯Ruby中打开网站,请使用' open-uri'类。您可以找到其文档here

我希望这有助于理解为什么redirect_to不能在纯Ruby中工作,并且可能有助于在有和没有Rails的情况下使用它。

答案 2 :(得分:2)

除非你将它们合并并发送给它们,否则它不会知道旧的参数。

url = "www.mysite.com/?param1=abc"
p = params.merge({:param2 => 'xyz'})
redirect_to(url, p)