2013-07-22 55 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