我有两个控制器:Tasksadmins 和 Workers。
我定义了两个根,但有人告诉我它有问题。
有人可以告诉我问题是什么吗?
TODOLIST::Application.routes.draw do
devise_for :users
resources :tasksadmins
root to: "tasksadmins#index"
resources :workers
root to: "workes#index"
end
我有两个控制器:Tasksadmins 和 Workers。
我定义了两个根,但有人告诉我它有问题。
有人可以告诉我问题是什么吗?
TODOLIST::Application.routes.draw do
devise_for :users
resources :tasksadmins
root to: "tasksadmins#index"
resources :workers
root to: "workes#index"
end
路由 DSL的root
方法允许您为应用程序或特定命名空间定义默认路由:您不能有多个“根”路由。
资源的默认路由(例如/workers
)被路由到相应控制器的索引操作(WorkersController
),无需为每个控制器指定它。
如果root
多次使用该方法,将使用最后一次。它会在这里workers#index
。简化您的路线:
TODOLIST::Application.routes.draw do
root to: "workers#index"
devise_for :users
resources :tasksadmins
resources :workers
end
root
并不意味着index
控制器的动作。相反,它本质上意味着主页:当我转到时会调用什么操作http://www.example.com/
?
因此,只有定义一个才有意义root
:现在,您http://www.example.com/
同时指向tasksadmins#index
and workers#index
,这没有多大意义。Rails 只会选择其中之一,但这可能不是您要寻找的行为。
我怀疑你正在尝试改进你的resources
路线,但没有必要:resources :workers
已经定义了http://www.example.com/workers
指向的路线workers#index
,所以这条线应该是你需要的所有工作人员。
但是,如果您想http://www.example.com/
指向与 相同的工人列表http://www.example.com/workers
,那么root 'workers#index'
是完全正确的。