namespace và scope đều nhóm route, nhưng ảnh hưởng khác nhau:
namespace :admin | scope :admin | |
|---|---|---|
| URL prefix | /admin/posts | /admin/posts |
| Controller | Admin::PostsController | PostsController |
| Named helper | admin_posts_path | posts_path |
ruby
# namespace: URL + module + helper
namespace :admin do
resources :posts # Admin::PostsController
end
# scope: chỉ URL prefix, controller không đổi
scope :v1 do
resources :posts # PostsController
endDùng namespace cho admin panel (muốn tất cả đều tách biệt).
Dùng scope cho API versioning khi muốn giữ controller cũ.
Both group routes but affect different things:
namespace :admin | scope :admin | |
|---|---|---|
| URL prefix | /admin/posts | /admin/posts |
| Controller | Admin::PostsController | PostsController |
| Named helper | admin_posts_path | posts_path |
ruby
# namespace: URL + module + helper prefix
namespace :admin do
resources :posts # Admin::PostsController
end
# scope: URL prefix only, controller unchanged
scope :v1 do
resources :posts # PostsController
endUse namespace for admin panels (full separation).
Use scope for API versioning when you want to keep existing controllers.