2011-10-06 72 views
4

我有我的根路徑爲什麼我的導軌路線有點不合適?

root :to => 'home#index' 

這是我的家控制器和如果我訪問http://localhost:3000/所有的偉大工程,我打適當的主控制器和索引操作。然後我安裝了這種寶石rails_admin但是,當我訪問http://localhost:3000/admin我打的方法在我的應用程序控制器

rescue_from CanCan::AccessDenied do |exception| 
    redirect_to root_path, :alert => exception.message 
end 

,並得到這個錯誤,這怎麼可能,現在我有一個路由錯誤...任何想法

Routing Error 

No route matches {:controller=>"home"} 

回答

3

我認爲問題在於在rails_admin引擎中沒有HomeController,它有自己的路由,並以某種方式停在那裏(因爲引擎中沒有這樣的控制器)。我會嘗試使用:

redirect_to root_url 

甚至這個

redirect_to '/' 

這最後一種方法是指軌道不必試圖通過調用URL爲找出路徑,工作時可能會更安全與發動機。

+1

這沒有把戲redirect_to'/'...非常感謝 – Trace

-1

看起來您沒有定義主控制器。

嘗試增加這個上面你的「根」的定義:

resources :home, :only => :index 

我也建議閱讀Rails的網站official Routes guide

+0

我加根的頂部前綴,但我得到的ActionController :: RoutingError(無路由匹配{ :controller =>「home」}): app/controllers/application_controller.rb:5:in ' – Trace

+0

這裏是我的routes.rb資源:home,:only =>:index root :to =>'home#index' – Trace

+0

在您的應用程序文件夾中執行'rake routes',root_path路徑與您的home#索引匹配嗎? –

4

如果您要引用您的引擎或config/initializers/rails_admin.rb內您的應用程序的路線,你應該main_app.

redirect_to main_app.root_path, :alert => exception.message