以下内容应符合http://edgeguides.rubyonrails.org/routing.html#using-root
的规定的routes.rb
Rails.application.routes.draw do
scope module: 'admin' do
constraints subdomain: 'admin' do
root to: 'tenants#index'
resources :tenants
end
end
root to: 'users#index'
resources :users
end
不幸的是,无论哪个根列出来都会最终取代。如上所列,admin.xyz.com将触发租户#index。如果外部根目录:'users #index'首先在源顺序中移动,那么它将成为包括admin.xyz.com在内的所有人的根路径。
我是否正确阅读了指南?我是这样,这可能是rails 5.0.0-beta1中的一个错误。
答案 0 :(得分:4)
我认为问题是你必须把:as =>您使用的一个或另一个的something_not_root,以便同时使用它们。我为此信息引用了此SO post
所以试试这个
Rails.application.routes.draw do
scope module: 'admin' do
constraints subdomain: 'admin' do
root to: 'tenants#index', as: tenants_root
resources :tenants
end
end
root to: 'users#index'
resources :users
end
然后调用它
tenants_root_path
答案 1 :(得分:4)
如果您尝试在命名空间内创建根路径(在标题中提到但在问题中没有真正描述),您可以这样做:
namespace(:plan) do
root controller: :plan, action: :index, as: :root
end
这将创建一个plan_root_path辅助方法。我一开始觉得这有点令人困惑,因为我不明白我对命名空间的使用会导致rails自动在命名空间前面添加路径,所以我尝试了这样的代码:
root controller: :plan, action: :index, as: :plan_root
导致创建了plan_plan_root_path辅助方法,这不是你想要的。
我正在为这个问题添加这个答案,因为在搜索" rails 5名称空间根路径"时,这个问题是最高响应。但命名空间问题尚未解决。