我正在尝试在我的一个控制器中发出redirect_to到一个完全限定的URL +我想传递一些参数
在网站A的控制器中我做:
redirect_to: "www.siteB.com/my_controller/my_action?my_parameter=123"
在rails中有更好的方法吗?
答案 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。