2010-05-18 51 views
1

我有一個小的軌道應用程序,默認腳手架生成的路線例如。 /stadia/1.xml。但是,我必須支持無法正確構建此類URL的傳統客戶端應用程序。我需要做的是在表格圖網址:如何將非REST URL映射到REST?

/stadia?id=1?format=xml/stadia/1.xml

甚至是這樣的:

/myApp?model=<model_name>?id=<id>?format=xml/<model_name/<id>.xml

是否有可能手藝在Rails的合適途徑?

回答

0

如果你在apache做一些url重寫?

+0

像這樣的一攬子聲明並不能幫助OP太多。我會幫助至少提供一個如何實現這個目標的例子。 – dafmetal 2010-05-18 11:27:49

+0

有時,人們使用舊的現有代碼工作,並且無法處理「哦,爲什麼我們不重寫整個應用程序,以及我們的應用程序中的所有url?」這是一種解決方法,但是它很快,而且很難看。 – dzen 2010-05-18 11:30:13

0

I had a similar question。到目前爲止沒有答案,所以似乎routes.rb配置不提供一個簡單的方法來做到這一點(基於查詢參數的路由),我覺得實際上令人驚訝。

所以一個醜陋的解決辦法是有一個「對myApp」默認路由,然後有專門的轉向控制器,它會看着查詢參數(因爲在控制器你有權訪問),並相應地重定向。

1

我對此沒有很好的答案。我會做的是將url的第一部分更改爲/stadia_legacy舊版網址或更改RESTful路線的第一部分網址。

然後你就可以在路線圖:

map.stadia_legacy :stadia_legacy, :controller => 'stadias', :action => 'please_redirect_me' 

然後在行動please_redirect_me您可以檢查所有PARAMS stadias控制器(他們是在availble的哈希paramsparams[:id]params[:format]等),並重定向到正確的URL。或者,您可以編寫所有手動路徑來更正控制器和操作。