2013-08-30 39 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'