namespace
- 1.0.0
- 1.1.6
- 1.2.6
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.8
- 3.0.0 (0)
- 3.0.9 (38)
- 3.1.0 (-6)
- 3.2.1 (-4)
- 3.2.8 (0)
- 3.2.13 (0)
- 4.0.2 (0)
- 4.1.8 (0)
- 4.2.1 (0)
- 4.2.7 (0)
- 4.2.9 (0)
- 5.0.0.1 (0)
- 5.1.7 (0)
- 5.2.3 (0)
- 6.0.0 (0)
- 6.1.3.1
- 6.1.7.7
- 7.0.0
- 7.1.3.2
- 7.1.3.4
- What's this?
namespace(path, options = {})
public
Scopes routes to a specific namespace. For example:
namespace :admin do resources :posts end
This generates the following routes:
admin_posts GET /admin/posts(.:format) {:action=>"index", :controller=>"admin/posts"} admin_posts POST /admin/posts(.:format) {:action=>"create", :controller=>"admin/posts"} new_admin_post GET /admin/posts/new(.:format) {:action=>"new", :controller=>"admin/posts"} edit_admin_post GET /admin/posts/:id/edit(.:format) {:action=>"edit", :controller=>"admin/posts"} admin_post GET /admin/posts/:id(.:format) {:action=>"show", :controller=>"admin/posts"} admin_post PUT /admin/posts/:id(.:format) {:action=>"update", :controller=>"admin/posts"} admin_post DELETE /admin/posts/:id(.:format) {:action=>"destroy", :controller=>"admin/posts"}
Supported options
The :path, :as, :module, :shallow_path and :shallow_prefix options all default to the name of the namespace.
- :path
-
The path prefix for the routes.
namespace :admin, :path => "sekret" do resources :posts end
All routes for the above resources will be accessible through /sekret/posts, rather than /admin/posts
- :module
-
The namespace for the controllers.
namespace :admin, :module => "sekret" do resources :posts end
The PostsController here should go in the Sekret namespace and so it should be defined like this:
class Sekret::PostsController < ApplicationController # code go here end
- :as
-
Changes the name used in routing helpers for this namespace.
namespace :admin, :as => "sekret" do resources :posts end
Routing helpers such as admin_posts_path will now be sekret_posts_path.
- :shallow_path
-
See the scope method.
Without module
If you want to have only the path prefix without namespacing your controller, pass :module => false.
Normal:
namespace :account do resources :transactions, :only => [:index] end account_transactions GET /account/transactions(.:format) {:controller=>"account/transactions", :action=>"index"}
With :module => false:
namespace :account, :module => false do resources :transactions, :only => [:index] end account_transactions GET /account/transactions(.:format) {:controller=>"transactions", :action=>"index"}
with a params constant
If you want to have a params with the same value on all of the urls in this namespace, you can write this :
with a constant param :admin set to true
namespace :admin, :admin => true do resources :posts end
all of the urls like /admin/post have a param :admin with the value true.
It works also with :
scope 'admin', :admin => true do ... end match 'administration', :admin => true => 'posts#index' get 'administration', :admin => true
etc…