Rails route: определение корня в пространство имен

у меня есть 2 контроллера:

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

и мои маршруты.РБ выглядит так:

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

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

но когда я посещаю /mobile, это все равно рендеринг индексной страницы первого контроллера, также попробовал это:

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

но это дает мне ошибку: uninitialized constant Mobile::Mobile Я хочу отобразить индексную страницу второго контроллера, как я могу это сделать ?

редактировать

введя / mobile я хочу, чтобы отрисовывать файлы, расположенные здесь:

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

но это разрывает файлы здесь:

app/
   views/
       /posts
          index.html.erb

3 ответов


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

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

вместо

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

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

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

использование пространства имен уже добавляет мобильный к именам контроллеров внутри этого блока.


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

на rails5 это работает.