Rails中用于生成报告的RESTful路由

时间:2010-02-22 20:37:51

标签: ruby-on-rails rest

我正在使用Rails应用程序,该应用程序使用RESTful路由来处理它的资源。我现在正在创建一个报告控制器,它将生成HTML,XML,CSV等报告。根据发送到控制器的参数,将有几种不同的报告可供生成。

对于此报告控制器使用REST是否过度,因为它不是将保存然后可用于编辑或删除的实际资源?使用RESTful会创建许多我永远不需要使用的路由。

定义自定义路线而不是RESTful会更好吗?比如在控制器中有一个generate动作来生成报告并以指定的格式输出它?

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

3 个答案:

答案 0 :(得分:1)

你的方式很好,或者如果你喜欢坚持使用RESTful路线,你可以选择你想要的路线。

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

答案 1 :(得分:1)

抱歉复活这么老的帖子。

根据RESTful Web Services,您无需提供写入操作,因此可以将您的服务视为RESTful。

据我所知,您需要使用ROA(面向资源的架构)设计您的服务,就是这样。

话虽如此,@ jdl回答是正确的,RESTful。 :)

答案 2 :(得分: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等。