使用GET / POST参数将Rails重定向到“www.somewebsite.com”?

时间:2010-01-07 00:24:32

标签: ruby-on-rails ruby http-status-code-301 http-status-code-302

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

在网站A的控制器中我做:

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

在rails中有更好的方法吗?

3 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:1)

您显然可以通过主持人:

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

查看url_for的文档。

答案 2 :(得分:1)

与其他回应一致。如果在站点A的routes.rb中设置定义路径的控制器,则可以使用生成的URL帮助程序。只需覆盖:host作为参数。

示例:

Site 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。