针对特定操作将路由范围更改为“admin”

时间:2013-08-30 09:50:37

标签: ruby-on-rails ruby-on-rails-4

我有一个类别模型,在我的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等访问创建,编辑和删除等操作。

有没有简单的方法来提及这个范围?

2 个答案:

答案 0 :(得分: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

检查其余部分

答案 1 :(得分:0)

我认为你可以两次定义类别路线。

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