2011-11-20 65 views
2

隨着Rails 3的路由,使用命名空間的路線如下面的例子...名稱空間路由的默認資源?

namespace :admin do 
    get 'dashboard' => 'dashboard#index' 
end 

...我怎樣才能得到「/管理員」路由到「儀表盤#指數」以及'/ admin/dashboard'?要做到這一點的最好辦法是定義...

get 'admin' => 'admin/dashboard#index' 

外的命名空間還是有更優雅的方式來別名資源?

回答

7

您可以將路徑設置爲/,該路徑被Rails路由器內部剝離,並且變爲/admin。唯一的區別是它在你的命名空間而不是在它之外。

namespace :admin do 
    get 'dashboard' => 'dashboard#index' 
    get '/' => 'dashboard#index' 
end 

主要生產:

admin_dashboard GET /admin/dashboard(.:format) {:action=>"index", :controller=>"admin/dashboard"} 
      admin GET /admin(.:format)   {:controller=>"admin/dashboard", :action=>"index"} 

您還可以使用內置的redirect方法重定向:

namespace :admin do 
    get 'dashboard' => 'dashboard#index' 
    get '/' => redirect('/admin/dashboard') 
end 

或者,如果你想這樣做的命名空間之外:

get '/admin' => redirect('/admin/dashboard') 

我個人喜歡最好的第一個例子。將其保留在名稱空間內,並且看起來與默認根路由非常相似,因此在Admin命名空間路由中工作時很容易閱讀。

4

在Rails 4我用:

namespace :admin do 
    root 'dashboard#index' 
end 

而且你還可以定義自定義路線/admin/dashbaord

namespace :admin do 
    root 'dashboard#index' 
    get 'dashboard' => 'dashboard#index' 
end