2013-08-30 75 views
0

我有一個分類模型,在我的routes.rb,我有更改路線,以「管理員」範圍的具體行動

resources :categories 

產生以下一組路線。

categories_path  GET  /categories(.:format)   categories#index 
        POST /categories(.:format)   categories#create 
new_category_path GET  /categories/new(.:format)  categories#new 
edit_category_path GET  /categories/:id/edit(.:format) categories#edit 
category_path  GET  /categories/:id(.:format)  categories#show 
        PATCH /categories/:id(.:format)  categories#update 
        PUT  /categories/:id(.:format)  categories#update 
        DELETE /categories/:id(.:format)  categories#destroy 

現在,我需要的是除了所有GET路由,我希望剩下的路由在'/ admin'範圍之內。因此,諸如創建,編輯和刪除等操作可以在admin/categories /:id/edit等處訪問。

有沒有簡單的方法來提及這個範圍?

回答

1

您可能希望在命名空間下組織控制器組。最常見的情況是,您可以將多個管理控制器歸入管理員名稱空間。你會在你的路由器放在一起,這些控制器app/controllers/admin目錄下,你可以把它們組:

namespace "admin" do 
    resources :posts, :comments 
end 

這將創建一個號碼,每個柱子和評論控制器的路線。對於Admin::PostsController,Rails會創建:

GET  /admin/posts 
GET  /admin/posts/new 
POST  /admin/posts 
GET  /admin/posts/1 
GET  /admin/posts/1/edit 
PATCH/PUT /admin/posts/1 
DELETE /admin/posts/1 

檢查它通過apidock documentation

+0

感謝您的回答其餘的,但我想沒有命名空間和命名空間,其餘被訪問的GET的URL。我怎麼樣? – shankardevy

+0

如何嘗試添加':except => [:index,:new]',看看它是否可以工作,所以它會像這樣:'resources:posts,:except => [:index,:new]'而不是確信這一點,但沒有嘗試,爲非管理員操作'resources:posts,:only ='[:index,:new] –

0

我認爲你可以定義兩次類別路線。

resources :categories, :only => :index 
resources :categories, :except => :index, :path => 'admin/categories'