命名路由(RESTful),用于索引,删除,创建和编辑以外的操作

时间:2010-06-10 02:53:34

标签: ruby-on-rails routing

举例说明:

class Customer
  has_many :sales_orders
end

class SalesOrder
  belongs_to :customer
end

我想让客户列出可以发送的sales_order,如果我:

  1. 放置路由http://.../sales_orders/can_be_delivered
  2. 为报告http://.../reports/sales_orders_can_be_delivered
  3. 创建新的控制器

    对于第一个,应该在route.rb中发生什么?

    对于第二个,没有任何东西进入route.rb,我们可以使用最后定义的路由,即:controller /:action ..< - 但这不是命名路由

    对这类问题的任何想法?

1 个答案:

答案 0 :(得分:1)

我会选择第一个选项,因为您想要的视图只是您已拥有资源/控制器的销售订单的另一个视图。

路线是:

map.resources:sales_orders,:collection => {:can_be_delivered => :得到}

这将为您提供... / sales_orders / can_be_delivered和帮助者can_be_delivered_sales_orders_path + can_be_delivered_sales_orders_url

旁注

除了选项:集合,你还可以添加:only => [:new, :create, :destroy],例如你的控制器只需要新的,创建和销毁标准的restful动作。

PS。确保你把这个放在底部的所有路线上,我建议你注释掉你所有的行动是否安静。

最后,本指南是在rails中路由的一个很好的开始:

http://guides.rubyonrails.org/routing.html