使用Rails 3中的路由,使用命名空间路由,如下例所示......
namespace :admin do
get 'dashboard' => 'dashboard#index'
end
...如何让&#39; / admin&#39; 路由到&#39; dashboard #index&#39; 以及< EM>&#39; /管理/仪表板&#39; ?最好的方法是定义......
get 'admin' => 'admin/dashboard#index'
在命名空间之外还是有一种更优雅的方法来对资源进行别名?
答案 0 :(得分: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命名空间路由中工作时很容易阅读。
答案 1 :(得分:4)
在Rails 4中我使用:
namespace :admin do
root 'dashboard#index'
end
您还可以为/admin/dashbaord
定义自定义路线:
namespace :admin do
root 'dashboard#index'
get 'dashboard' => 'dashboard#index'
end