2011-11-20 74 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 
相关问题