回答

1

您可以通过明显主机:

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

退房为url_for的文档。

+1

此解决方案假定SiteA的routes.rb具有匹配该控制器/操作对的路由。如果您保留了默认路由,这不是问题。 – EmFi 2010-01-07 14:04:30

6

如果网站B正在运行相同的应用程序(即路线是该服务器的相同),那么你就可以建立你描述的重定向:

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

注意,不是url_for处理的任何键是自动编码为参数。

+0

此解决方案假定SiteA的routes.rb具有与该控制器/操作对匹配的路由。如果您保留了默认路由,这不是问题。 – EmFi 2010-01-07 14:03:57

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) 
... 

只要网站B的Web服务器(轨或其他)承认http://www.siteB.com/whaterver/edit?my_parameter=123你”很好。

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