2

我有这个链接:

railsapp/api/details.php?id=1&app=dvd 

我需要重定向到外部非 Rails 服务器中的另一个页面:

non-railsapp/api/details.php?id=1&app=dvd 

如果我把它放在 routes.rb 文件中:

  match '/api/details.php' => redirect("non-railsapp/api/details.php")

重定向将起作用,但不会传递参数。需要什么魔法才能使参数也被传递?

事实上,如果能够/api/使用所有参数将之后的所有内容重定向到外部站点,那就太好了。那会让我的生活轻松很多。

我已阅读有关 Rails 路由的文档,但找不到任何此类示例。

谢谢。

4

2 回答 2

3

尝试这样的事情:

get "/api/details.php/:id/:app" => redirect{ |p, req| "non-railsapp/api/details.php/#{p[:id]}/#{p[:app]}" }

编辑

您还可以将参数设为可选:

get "/api/details.php(/:id(/:app))" => redirect{ |p, req| "non-railsapp/api/details.php(/#{p[:id]}(/#{p[:app]}))" }
于 2013-08-02T13:37:42.850 回答
2

您可以执行以下操作:

url = URI(" http://www.google.com/ ")

url.query = URI.encode_www_form(:q => "查询")

#重定向到http://www.google.com/?q=query

重定向到 url.to_s

于 2016-05-06T20:28:17.297 回答