Rails 3路由:向命名空间中的所有资源添加操作

时间:2011-08-18 12:25:02

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

我正在为cms设计我的管理面板,我希望有例如下载,图像和文章。这些元素中的每一个都可以分类,因此我在每个控制器上都有一个“类别”(下载,图像和文章)。

在我的路线文件中,我有以下内容:

 namespace :admin do    
     resources :downloads
     resources :images
     resources :articles
 end

我的问题是上面的代码只为索引,显示,编辑,更新和销毁创建路由。是否有一种方法可以将类别操作添加到所有资源一次,而不会将其声明3次?

2 个答案:

答案 0 :(得分:6)

namespace :admin do
  [:downloads, :images, :articles].each do |resource|
    resources resource do
      get :categories, :on => :collection
    end
  end
end

答案 1 :(得分:0)

如果您需要更细粒度的控制,您还可以提供自己的自定义资源方法:

Rails.application.routes.draw do

  def resources_with_count(*params, &block)
    resources *params do
      collection do
        get :count
      end
    end
    resources *params, &block
  end

  # This will now generate regular resources, but also add the /users/count route as well
  resources_with_count :users do
    resources :comments
  end
  resources_with_count :posts
end