2010-02-22 21 views
3

我正在使用Rails應用程序使用RESTful路線來處理它的資源。我現在正在創建一個報告控制器,它將生成HTML,XML,CSV等報告。根據發送到控制器的參數,可以生成幾個不同的報告。Rails中用於生成報告的RESTful路由

對於此報告控制器使用REST是否矯枉過正,因爲它不是一個實際的資源將被保存,然後可用於編輯或刪除?使用RESTful將創建很多我永遠不需要使用的路由。

定義自定義路由而不是使用RESTful會更好嗎?比如在生成報告並以指定格式輸出報告的控制器中有一個generate操作?

map.connect 'reports', :controller => 'reports', :action => 'generate' 

回答

0

我會以非RESTful的方式做到這一點。沒有必要使它成爲RESTful。即使@jdl答案也不是RESTful,因爲它只包含一個動作show。在這種情況下,報告不是可以創建,編輯或刪除的資源。我想補充這種路線:

map.report 'reports/:id', :controller => 'reports', :action => 'generate' 
map.report_with_format 'reports/:id.:format', :controller => 'reports', :action => 'generate' 
map.reports 'reports', :controller => 'reports', :action => 'index' 

使用命名的路線,而不是connect會給你喜歡reports_path

1

你的方式很好,或者如果你喜歡堅持RESTful路線,你可以選擇你想要的路線。

map.resources :reports, :only => [:show] 
1

對不起復活舊等後期一些不錯的網址助手。

根據RESTful Web Services,您不需要提供寫操作,以便您的服務可以被視爲RESTful。

據我所知,您需要使用ROA(面向資源的架構)來設計您的服務,就是這樣。

這就是說,@jdl的答案是正確的和RESTful。 :)