我將Rails 3.0.0.beta4中的一個應用程序升級到了Rails 3.0.0,並遇到意外錯誤。我使用authlogic進行身份驗證,升級後,新用戶會話表單的路由開始拋出此錯誤。有關Authlogic和Rails 3.0.0的路徑問題
未定義的方法`user_sessions_path」
好吧,我使用的是單一控制器名稱。不確定beta4和導致問題的新版本之間有什麼不同。
在我的routes.rb文件,我有這樣的:
get "user_session/new", :as => :login
get "user_session/destroy", :as => :logout
resources :user_session, :controller => :user_session
其中定義我的奇異控制器的路線。
要解決我不得不改變形式,從這個第一行的問題:
<%= form_for @user_session do |f| %>
這樣:
<%= form_for @user_session, :url => user_session_index_path do |f| %>
令人震驚的我,奇怪的是路由的名稱。運行耙路線顯示路線的名稱,但我不明白爲什麼需要索引。我期待更像post_ method的user_session_path。我的user_session路線是唯一以這種方式行事的路線。所有其他都如我所料。
繼承人從耙路輸出:
user_session_index GET /user_session(.:format) {:action=>"index", :controller=>"user_session"}
user_session_index POST /user_session(.:format) {:action=>"create", :controller=>"user_session"}
這工作,但我很好奇,想知道是否有人遇到了這一點。
謝謝。我在測試解決此錯誤時添加了複數資源:「ActionController :: RoutingError(未初始化的常量UserSessionsController)」,並忘記將其刪除。這解釋了路徑中的索引。我仍然創建了這樣的路線:resource:user_session,:controller =>:user_session來解決上述錯誤。我還需要爲form_for提供:url選項,因爲它確實需要複數資源。 – 2010-09-20 23:37:57
我不知道有一個資源(vs資源),多數民衆贊成真棒 - 謝謝! – Chance 2011-05-12 18:42:59