2013-07-22 32 views
2

我有此链接:的Rails 3重定向到外部页面参数

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

,我需要redirecto到另一页在外部非轨服务器:

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

如果我把这个在routes.rb文件中:

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

重定向将工作,但参数将不会被传递。有什么魔法需要在那里以便传递参数?

事实上,如果能够将所有参数的/api/之后的所有内容重定向到外部站点,那将会是什么样的结果。这会让我的生活变得更轻松。

我读过关于Rails路由的文档,但找不到任何这样的例子。

谢谢。

回答

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

不幸的是,这导致了以下错误:'没有路由匹配[GET]“/api/details.php”'。其中一个我试图弄清楚这一点。 – kakubei

+0

好的,参数是否可选?我更新了我的答案。 – Daniel

+0

不,参数绝对不是可选的。此外,使参数可选不会解决这个错误是关于details.php页面没有路由的事实。 – kakubei