私は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
これらは、そのエラーの発生に関与している可能性があると私が考えたコードです。より明確にするためにコードを追加する必要がある場合は、お知らせください。