root用户名或范围内的root不能与rails 5.0.0-beta1一起使用

时间:2016-01-04 00:38:26

标签: ruby-on-rails rails-routing ruby-on-rails-5

以下内容应符合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中的一个错误。

2 个答案:

答案 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名称空间根路径"时,这个问题是最高响应。但命名空间问题尚未解决。