You may wish to organize groups of controllers under a namespace. Most commonly, you might group a number of administrative controllers under an Admin:: namespace. You would place these controllers under the app/controllers/admin directory, and you can group them together in your router:
namespace
:admin
do resources
:posts,
:commentsend |
This will create a number of routes for each of the posts and comments controller. ForAdmin::PostsController, Rails will create:
| HTTP Verb | Path | action | named helper |
|---|---|---|---|
| GET | /admin/posts | index | admin_posts_path |
| GET | /admin/posts/new | new | new_admin_post_path |
| POST | /admin/posts | create | admin_posts_path |
| GET | /admin/posts/:id | show | admin_post_path(:id) |
| GET | /admin/posts/:id/edit | edit | edit_admin_post_path(:id) |
| PUT | /admin/posts/:id | update | admin_post_path(:id) |
| DELETE | /admin/posts/:id | destroy | admin_post_path(:id) |
If you want to route /posts (without the prefix /admin) to Admin::PostsController, you could use
scope
:module
=> "admin"
do resources
:posts,
:commentsend |
or, for a single case
resources
:posts,
:module
=> "admin" |
If you want to route /admin/posts to PostsController (without the Admin:: module prefix), you could use
scope
"/admin"
do resources
:posts,
:commentsend |
or, for a single case
resources
:posts,
:path
=> "/admin/posts" |
In each of these cases, the named routes remain the same as if you did not use scope. In the last case, the following paths map to PostsController:
| HTTP Verb | Path | action | named helper |
|---|---|---|---|
| GET | /admin/posts | index | posts_path |
| GET | /admin/posts/new | new | new_post_path |
| POST | /admin/posts | create | posts_path |
| GET | /admin/posts/:id | show | post_path(:id) |
| GET | /admin/posts/:id/edit | edit | edit_post_path(:id) |
| PUT | /admin/posts/:id | update | post_path(:id) |
| DELETE | /admin/posts/:id | destroy |
post_path(:id) |
本文介绍如何在Rails应用中使用命名空间来组织控制器,并通过示例展示了如何为Admin命名空间下的PostsController设置路由。
916

被折叠的 条评论
为什么被折叠?



