typ*_*ror 2 ruby ruby-on-rails rails-routing ruby-on-rails-3
使用Rails 3中的路由,使用命名空间路由,如下例所示......
namespace :admin do
get 'dashboard' => 'dashboard#index'
end
Run Code Online (Sandbox Code Playgroud)
...如何让'/ admin'路由到'dashboard #index'以及'/ admin/dashboard'?最好的方法是定义......
get 'admin' => 'admin/dashboard#index'
Run Code Online (Sandbox Code Playgroud)
在命名空间之外还是有一种更优雅的方法来对资源进行别名?
您可以创建/Rails路由器内部剥离的路径,然后变为/admin.唯一的区别是它在你的命名空间内而不是在它之外.
namespace :admin do
get 'dashboard' => 'dashboard#index'
get '/' => 'dashboard#index'
end
Run Code Online (Sandbox Code Playgroud)
哪个产生:
admin_dashboard GET /admin/dashboard(.:format) {:action=>"index", :controller=>"admin/dashboard"}
admin GET /admin(.:format) {:controller=>"admin/dashboard", :action=>"index"}
Run Code Online (Sandbox Code Playgroud)
您还可以使用内置redirect方法进行重定向:
namespace :admin do
get 'dashboard' => 'dashboard#index'
get '/' => redirect('/admin/dashboard')
end
Run Code Online (Sandbox Code Playgroud)
或者,如果您想在命名空间之外执行此操作:
get '/admin' => redirect('/admin/dashboard')
Run Code Online (Sandbox Code Playgroud)
我个人最喜欢第一个例子.将其保留在命名空间内,看起来与默认的根路由非常相似,因此在Admin命名空间路由中工作时很容易阅读.
在 Rails 4 中,我使用:
namespace :admin do
root 'dashboard#index'
end
Run Code Online (Sandbox Code Playgroud)
您还可以为以下项目定义自定义路线/admin/dashbaord:
namespace :admin do
root 'dashboard#index'
get 'dashboard' => 'dashboard#index'
end
Run Code Online (Sandbox Code Playgroud)