5

我正在尝试在我的一个控制器中向完全限定的 URL 发出 redirect_to + 我想传入一些参数

在站点 AI 的控制器中执行以下操作:

redirect_to: "www.siteB.com/my_controller/my_action?my_parameter=123"

在rails中有更好的方法吗?

4

3 回答 3

6

如果 SiteB 正在运行相同的应用程序(即该服务器的路由相同),那么您可以构建您描述的重定向:

redirect_to :host => "www.siteB.com", 
            :controller => "my_controller", 
            :action => "my_action",  
            :my_parameter => 123

请注意,任何未被处理的键都会url_for自动编码为参数。

于 2010-01-07T00:35:57.887 回答
1

沿着其他反应的路线。如果您在站点 A 的 routes.rb 中设置了定义路径的控制器,则可以使用生成的 url 帮助程序。只需覆盖 :host 作为参数。

例子:

站点 A Routes.rb:

...
map.resource whatever
...

站点 A 控制器:

...
redirect_to edit_whatever_url(:host => "www.siteB.com", :my_parameter => 123)
...

只要 SiteB 的网络服务器(rails 或其他)识别出http://www.siteB.com/whaterver/edit?my_parameter=123你是好的。

警告:请记住,使用 302 重定向帖子会产生RFC 2616中定义的特定后果。简而言之,这意味着在重定向的帖子成功之前,将要求用户重新确认他们对新 URL 的帖子。

于 2010-01-07T13:56:26.380 回答
1

您显然可以通过主机:

redirect_to { :host => "www.siteB.com", :controller => "my_controller", :action => "my_action",  :id => 123 }

查看url_for.

于 2010-01-07T00:32:00.523 回答