2011-08-18 79 views
3

我正在設計我的CMS管理面板,我想要例如下載,圖像和文章。每個元素都可以分類,所以我在每個控制器上都有一個「類別」(下載,圖片和文章)。Rails 3路由:添加動作到名稱空間中的所有資源

在我的路線文件我有以下幾點:

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

我的問題是,上面的代碼只創造了指數,顯示,編輯,更新和銷燬路線。是否有一種方法將類別動作添加到所有資源一次,而無需聲明3次?

回答

5
namespace :admin do 
    [:downloads, :images, :articles].each do |resource| 
    resources resource do 
     get :categories, :on => :collection 
    end 
    end 
end 
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