2013-04-09 76 views
1

我第一次在rails應用程序中使用設計(2.1.2)。我跟着w /安裝過程並生成了用戶模型。我的設置非常通用,我只有兩個控制器。昨天我幾個小時都沒有問題,正在運行和驗證。我登錄和註銷並停止並重新啓動我的服務器沒有問題。生活很好。然後,當我試圖訪問/主要/索引(保護)其重定向到用戶/ sign_in是有道理的,但我得到這個藍色設計和根路線

沒有路由匹配{:控制器=>「設計/主」 }

這裏的routes.rb

get "bid/index" 
get "main/index" 
get "main/feed" 
get "main/admin" 
get "main/fullday" 
match "bid/bid/:id/:starttime/:endtime/:color" => "bid#bid" 
match "bid/delete/:id" => "bid#delete" 
match "main/bidfeed/:id" => "main#bidfeed" 
match "main/attr/:id/:field/:value" => "main#attr" 

devise_for :users 
root :to => 'main#index' 

我真的不明白的地方「設計/主」是從哪裏來的,我不明白爲什麼會失敗的那麼突然,我重新啓動服務器後:(

回答

2

這種情況通常發生在當您處於名稱空間控制器(這是ca se爲設計意見)。

在導致該錯誤的link_to上,嘗試在控制器名稱上預先加上斜槓。

Check this issue on the Devise page on Github

爲什麼出現這種情況:引擎蓋下,該devise_for方法,在你的routes.rb,實際上是爲你「設計控制器」創建一個命名空間。您創建的設計視圖屬於該「設計控制器」,因此,當您在設計名稱空間內使用link_to :controller => 'bla', Rails will try to find the controller bla`時,它不存在,並且kaboom!

理想情況下,您應該使用基於資源的路由或命名路由。這樣可以最大限度地減少這種問題,並讓你的代碼更易於閱讀和維護(呃,這通常是這種情況,但這決不是一個銀彈 - 謹慎使用這個建議)。如果你仍然很好奇,我會推薦閱讀guides page about routing(非常簡單直接的追逐)和documentation of url_for(如果你對Rails非常認真的話,真的很有幫助)。

+0

布拉沃,修復它,我永遠不會猜到,也不是我真的明白它。你能告訴我爲什麼:controller =>「/ main」工作,但:controller =>「main」失敗? – simusid 2013-04-09 22:32:04

+0

增加了一些答案,希望它有幫助! – Castilho 2013-04-09 22:48:00

+0

傑出thx! – simusid 2013-04-09 22:52:08