Rails 3使用参数重定向到外部页面

时间:2013-07-22 13:51:06

标签: ruby-on-rails redirect routes ruby-on-rails-3.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")

重定向将起作用,但参数不会传递。什么魔法需要在那里,以便params也通过?

事实上,能够将/api/之后的所有参数重定向到具有所有参数的外部网站将是多么美妙的事情。这会让我的生活变得更轻松。

我已经阅读了有关Rails路由的文档,但找不到任何类似的例子。

感谢。

2 个答案:

答案 0 :(得分:2)

尝试这样的事情:

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]}))" }

答案 1 :(得分:1)

您可以执行以下操作:

  

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

     

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

     

#redirecting to http://www.google.com/?q=query

     

redirect_to url.to_s