我是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