2013-01-01 43 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

感謝您的評論! –