routes.rb未正确定义

时间:2013-01-01 17:09:14

标签: ruby-on-rails routes

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

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

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

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

  resources :tasksadmins
  root to: "tasksadmins#index"

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:3)

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

因此,仅定义一个root才有意义:现在,您将http://www.example.com/指向tasksadmins#indexworkers#index,这并不是很有效感。 Rails只选择其中一个,但这可能不是你想要的行为。

我怀疑您正在尝试优化resources路由,但没有必要:resources :workers已经定义了指向http://www.example.com/workers的路由workers#index,因此该行应该是工人们所需要的一切。

但是,如果您希望http://www.example.com/指向与http://www.example.com/workers相同的工作人员列表,则root 'workers#index'完全正确。