Rails 3路由:自定义资源丰富的路由

时间:2011-09-13 11:18:57

标签: ruby-on-rails ruby-on-rails-3 rails-routing

我有一些文档(和DocumentsController),它们使用有限的固定类别集进行排序。我希望我的路线考虑到这些类别,所以我的网址看起来像:

/documents/:category/:id
/documents/:category/new
/documents/:category/:id/edit

...依此类推,这应该允许我访问params [:category]以过滤结果。有没有一种简单的方法来实现这一点,仍会生成路径助手?或者我错了这样做?

2 个答案:

答案 0 :(得分:2)

在Rails 3中自定义路径并不难。

match '/documents/:id', to: 'documents#show', as: :document会为您提供路径助手document_path(:id)。这甚至对于字符串而不是数字的ID也有效,因此将此模式扩展到/documents/:category/:id/edit应该没有问题。

答案 1 :(得分:2)

您可以提供资源的路径(如您所述):

# config/routes.rb
resources :documents, :path => 'documents/:category'

这会给你以下路线:

/documents/:category
/documents/:category/new
/documents/:category/:id/edit
/documents/:category/:id

在这种情况下,我不确定类别捕获将用于什么目的,因为您可以通过其主键引用文档。此密钥很可能不会在不同类别中重复。