2

以下应该按照http://edgeguides.rubyonrails.org/routing.html#using-root工作

路线.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 中的一个错误。

4

2 回答 2

4

我认为问题是您必须在您使用的一个或另一个上放置一个 :as => something_not_root 才能同时使用两者。我参考了这篇SO 帖子以获取该信息

所以试试这个

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
于 2016-01-04T01:49:28.857 回答
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 命名空间根路径”时这个问题作为首要响应出现,但命名空间问题没有得到解决。

于 2016-05-31T23:39:34.797 回答