Rails route: define root to namespace

18,760

Solution 1

namespace :mobile do
   root :to => "posts#index"
   resources :posts
end

root :to => "posts#index"
resources :posts

instead of

root :to => "posts#index"
resources :posts

namespace :mobile do
   root :to => "posts#index"
   resources :posts
end

Solution 2

namespace :mobile do
   get "/" => "posts#index"
   resources :posts
end

Using namespace already prepends mobile to the names of controllers inside that block.

Solution 3

Rails.application.routes.draw do

 root to: 'front/homes#index'

 namespace :front do
  resources :homes
 end 

 namespace :admin do 
  resources :interviews 
 end

 resources :meetings do 
  resources :slides
 end

end

In rails5 it works.

Share:
18,760
Said Kaldybaev
Author by

Said Kaldybaev

Trying to make world better

Updated on July 21, 2022

Comments

  • Said Kaldybaev
    Said Kaldybaev almost 2 years

    I've got 2 controllers:

    app/
       /controllers
          posts_controllers.rb
          /mobile
             posts_controllers.rb
    

    and my routes.rb looks like this:

    root :to => "posts#index"
    resources :posts
    
    namespace :mobile do
       root :to => "posts#index"
       resources :posts
    end
    

    but when i visit /mobile, it's anyway rendering index page of first controller, also tried this:

    namespace :mobile do
       root :to => "mobile/posts#index"
       resources :posts
    end
    

    but it's giving me error: uninitialized constant Mobile::Mobile I want to render the index page of second controller, how can i do that ?

    Edit

    By entering /mobile i want to render files located here:

    app/
       views/
           /mobile
              /posts
                 index.html.erb
    

    But it's rending files here:

    app/
       views/
           /posts
              index.html.erb
    
  • Said Kaldybaev
    Said Kaldybaev over 11 years
    the complete routes.rb is in question