Flowdock
method

namespace

Importance_3
v3.0.5 - Show latest stable - 2 notes - Class: ActionDispatch::Routing::Mapper::Scoping
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.
Show source
Register or log in to add new notes.
September 30, 2011 - (v3.0.0 - v3.1.0)
0 thanks

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"}
January 10, 2012
0 thanks

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…