我是Ruby on Rails的超級新手,我試圖使用Authlogic製作一個身份驗證系統(在此之後tutorial)。那我得到錯誤之後我提交登錄表單:ActionController :: RoutingError(沒有路由匹配「/ user_sessions/......)
No route matches "/user_sessions/%23%3CUserSession:0x103486aa8%3E"
令人驚訝的形式提交後右邊的頁面也帶來了錯誤的網址是:
http://localhost:3000/user_sessions/%23%3CUserSession:0x103486aa8%3E
我不知道我做錯了什麼,以及那個奇怪的UserSession代碼是從哪裏來的!
這是我的登錄表單看起來像:
<% form_for @user_session do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :username %><br />
<%= f.text_field :username%>
</p>
<p>
<%= f.label :password %><br />
<%= f.password_field :password %>
</p>
<p><%= f.submit "Submit" %></p>
<% end %>
這裏是我UserSession類:
class UserSession < Authlogic::Session::Base
def to_key
new_record? ? nil : [ self.send(self.class.primary_key) ]
end
end
和創建我UserSessionController的行動:
def create
@user_session = UserSession.new(params[:user_session])
if @user_session.save
flash[:notice] = "Login successful!"
redirect_back_or_default root_path
else
render :action => :new
end
end
「redirect_ba在ApplicationController中 ck_or_default」的方法:
def redirect_back_or_default(default)
redirect_to(session[:return_to] || default)
session[:return_to] = nil
end
最後一點有關的一切user_sessions在routes.rb中:
resources :user_sessions
match 'login' => "user_sessions#destroy", :as => :login
match 'logout' => "user_sessions#destroy", :as => :logout
這些都是我思想可以參與獲得該代碼錯誤。如果我應該添加更多代碼以使其更清楚,請告訴我。
向我們展示您的UserSession類。有些東西是錯誤的,它並沒有正確地調用to_param。 – DGM 2012-02-21 18:52:02
我將UserSession類添加到帖子中。 – soroush 2012-02-21 19:17:46
好的,你爲什麼設置to_key?你想達到什麼目的?啊,教程...它已經過時了,你不需要這個功能... – DGM 2012-02-21 19:25:32