Method: ActionDispatch::Routing::Mapper::Scoping#namespace

Defined in:
lib/action_dispatch/routing/mapper.rb

#namespace(path, options = {}) ⇒ Object

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.



620
621
622
623
624
625
# File 'lib/action_dispatch/routing/mapper.rb', line 620

def namespace(path, options = {})
  path = path.to_s
  options = { :path => path, :as => path, :module => path,
              :shallow_path => path, :shallow_prefix => path }.merge!(options)
  scope(options) { yield }
end