我有一些文档(和一个 DocumentsController),它们使用有限的固定类别集进行排序。我希望我的路线考虑这些类别,所以我的网址看起来像:
/documents/:category/:id
/documents/:category/new
/documents/:category/:id/edit
...等等,这应该允许我访问 params[:category] 以过滤结果。有没有一种简单的方法来实现这一点,仍然会生成路径助手?或者我这样做错了?
我有一些文档(和一个 DocumentsController),它们使用有限的固定类别集进行排序。我希望我的路线考虑这些类别,所以我的网址看起来像:
/documents/:category/:id
/documents/:category/new
/documents/:category/:id/edit
...等等,这应该允许我访问 params[:category] 以过滤结果。有没有一种简单的方法来实现这一点,仍然会生成路径助手?或者我这样做错了?
在 Rails 3 中自定义路径并不难。
match '/documents/:id', to: 'documents#show', as: :document
会给你路径助手document_path(:id)
。这甚至适用于作为字符串而不是数字的 ID,因此将此模式扩展到/documents/:category/:id/edit
应该没有问题。
您可以提供资源的路径(如您所述):
# config/routes.rb
resources :documents, :path => 'documents/:category'
这将为您提供以下路线:
/documents/:category
/documents/:category/new
/documents/:category/:id/edit
/documents/:category/:id
在这种情况下,我不确定类别捕获的用途是什么,因为您可以通过其主键引用文档。该键很可能不会跨类别重复。