4

我无法解决这个问题。

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

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

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

还是我错过了什么?它似乎不起作用?

4

3 回答 3

11

文档中:

重定向到(选项 = {},响应状态 = {})

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

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

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

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

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

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

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

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

url = "www.mysite.com/?param1=abc&params2=xyz"
redirect_to url
于 2012-08-16T09:23:39.770 回答
4

redirect_to不是 Ruby 函数,但在 Ruby on Rails 中常用。您可以在此处找到包含大量工作示例的文档。

如果你想在纯 Ruby 中打开一个网站,请使用 'open-uri' 类。你可以在这里找到它的文档。

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

于 2015-05-13T09:26:19.673 回答
2

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

url = "www.mysite.com/?param1=abc"
p = params.merge({:param2 => 'xyz'})
redirect_to(url, p)
于 2012-08-16T11:29:01.540 回答