我是 Ruby on Rails 的超级新手。我正在尝试使用 Authlogic 制作身份验证系统(遵循本教程)。在我提交登录表单后,我得到的错误是:
No route matches "/user_sessions/%23%3CUserSession:0x103486aa8%3E"
令人惊讶的是,表单提交后页面的 URL 也引发了错误:
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
ApplicationController中的“redirect_back_or_default”方法:
def redirect_back_or_default(default)
redirect_to(session[:return_to] || default)
session[:return_to] = nil
end
最后是与 routes.rb 中的user_sessions相关的所有内容:
resources :user_sessions
match 'login' => "user_sessions#destroy", :as => :login
match 'logout' => "user_sessions#destroy", :as => :logout
这些是我认为可能会导致该错误的代码。如果我应该添加更多代码以使其更清晰,请告诉我。