2013-01-01 46 views
1

我有两个控制器:Tasksadmins和Workers。routes.rb未正确定义

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

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

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

    resources :tasksadmins 
    root to: "tasksadmins#index" 

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

该文档是相当彻底http://guides.rubyonrails.org/routing.html – cih

回答

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'是完全正确的。

+1

非常感谢你! :] –

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 
+0

感谢您的评论! –