1

我有两个控制器:Tasksadmins 和 Workers。

我定义了两个根,但有人告诉我它有问题。

有人可以告诉我问题是什么吗?

TODOLIST::Application.routes.draw do
  devise_for :users

  resources :tasksadmins
  root to: "tasksadmins#index"

  resources :workers
  root to: "workes#index"
end
4

2 回答 2

3

路由 DSL的root方法允许您为应用程序或特定命名空间定义默认路由:您不能有多个“根”路由。

资源的默认路由(例如/workers)被路由到相应控制器的索引操作(WorkersController),无需为每个控制器指定它。

如果root多次使用该方法,将使用最后一次。它会在这里workers#index。简化您的路线:

TODOLIST::Application.routes.draw do
  root to: "workers#index"

  devise_for :users

  resources :tasksadmins
  resources :workers

end
于 2013-01-01T17:19:44.020 回答
3

root并不意味着index控制器的动作。相反,它本质上意味着主页:当我转到时会调用什么操作http://www.example.com/

因此,只有定义一个才有意义root:现在,您http://www.example.com/同时指向tasksadmins#indexand 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'是完全正确的。

于 2013-01-01T17:23:32.177 回答