2012-10-12 48 views
5

Tengo 2 controladores:rieles ruta: definir la raíz de espacio de nombres

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

y mi routes.rb se ve así:

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

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

pero cuando vuelva a /mobile, es de todos modos Índice de representación página del primer controlador, también probado esto:

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

pero me da error: uninitialized constant Mobile::Mobile Quiero renderizar la página de índice del segundo controlador, ¿cómo puedo hacer eso?

Editar

Al entrar/móvil Quiero hacer que los ficheros que se encuentran aquí:

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

pero es desgarrador archivos aquí:

app/ 
    views/ 
     /posts 
      index.html.erb 
+0

Lo está haciendo bien, solo verifique que la clase 'controllers/mobile/posts_controller.rb' es como:' clase Mobile :: PostsController jan267

Respuesta

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

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

en lugar de

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

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

¡Esta es una solución mucho mejor que la respuesta aceptada! – ReggieB

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

El uso de espacio de nombres ya se antepone móvil a los nombres de los controladores dentro de ese bloque.

+2

no funciona –

+1

¿cuál es el error? ¿Me puede dar 'routes.rb' completo? – shime

+1

el routes.rb completo está en cuestión –

1
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 

En rails5 funciona.

Cuestiones relacionadas