命名空间或范围内的根目录不适用于 rails 5.0.0-beta1
Root inside namespace or scope not working with rails 5.0.0-beta1
以下应按照 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.
中的错误
我认为问题在于您必须在您使用的一个或另一个上放置一个 :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
如果你试图在命名空间内创建根路径(在标题中提到但在问题中没有真正描述),你可以这样做:
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 namespace root path" 时作为最高响应出现,但名称空间问题没有解决。
以下应按照 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.
中的错误我认为问题在于您必须在您使用的一个或另一个上放置一个 :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
如果你试图在命名空间内创建根路径(在标题中提到但在问题中没有真正描述),你可以这样做:
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 namespace root path" 时作为最高响应出现,但名称空间问题没有解决。