2012-10-12 24 views
5

我有2個控制器:Rails的路線:定義根命名空間

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

和我的routes.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 我想渲染第二個控制器的索引頁,我該怎麼做?

編輯

通過輸入/移動我想渲染設在這裏的文件:

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

但它在這裏撕心裂肺文件:

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

你做得很好,只要檢查你的'controllers/mobile/posts_controller.rb'類是否類似於'class Mobile :: PostsController jan267

回答

15
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 
+4

這是比接受的答案更好的解決方案! – ReggieB

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

使用命名空間已經預先考慮手機到該塊內的控制器的名稱。

+2

它不起作用 –

+1

錯誤是什麼?你能給我完整的'routes.rb'嗎? – shime

+1

完整的routes.rb存在問題 –

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 

rails5它的工作原理。