【问题标题】:RESTful routes in Rails for generating reportsRails 中用于生成报告的 RESTful 路由
【发布时间】:2010-02-22 20:37:51
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: ruby-on-rails rest


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      抱歉复活了这么老的帖子。

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

      据我所知,您需要使用 ROA(面向资源的架构)来设计您的服务,仅此而已。

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

      【讨论】:

        【解决方案3】:

        我会以非 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 会给你一些不错的 url 助手,比如 reports_path 等。

        【讨论】:

          猜你喜欢
          • 2016-09-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-15
          相关资源
          最近更新 更多