2012-10-12 14 views
5

I 2 Controller haben:Rails Route: root-Namespace definieren

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

und meine routes.rb sieht wie folgt aus:

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

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

aber wenn ich /mobile besuchen, ist es sowieso Index-Rendering Seite des ersten Reglers, versuchte auch diese:

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

aber es gibt mir Fehler: uninitialized constant Mobile::Mobile Ich möchte die Indexseite des zweiten Controllers rendern, wie kann ich das tun?

bearbeiten

Durch Eingabe/mobile möchte ich Dateien befindet sich hier machen:

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

Aber es zerreißt Dateien hier:

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

Sie sind gut, überprüfen Sie einfach, dass Sie 'Controller/mobile/posts_controller.rb' Klasse wie folgt ist:' Klasse Mobile :: PostsController jan267

Antwort

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

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

statt

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

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

Dies ist eine viel bessere Lösung als die angenommene Antwort! – ReggieB

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

Namespace bereits prepends Mobil zu den Namen der Controller in diesem Block.

+2

es funktioniert nicht –

+1

Was ist der Fehler? Kannst du mir komplette 'routes.rb' geben? – shime

+1

die komplette routes.rb ist in Frage –

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 

In rails5 es funktioniert.

Verwandte Themen