ActionController :: RoutingError(ルートは "/user_sessions/…)
-
28-10-2019 - |
質問
Ruby on Railsは非常に初めてです。 authlogicを使用して認証システムを作成しようとしています(これに続いて チュートリアル)。私が得ているエラーは、ログインフォームを送信した直後です。
No route matches "/user_sessions/%23%3CUserSession:0x103486aa8%3E"
驚くべきことに、フォームが送信された直後のページのURLは、エラーも表示されます。
http://localhost:3000/user_sessions/%23%3CUserSession:0x103486aa8%3E
私が何を間違えたのか、そしてその奇妙なユーザーセッションコードがどこから来ているのか分かりません!!!
これが私のログインフォームのように見える方法です:
<% 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 %>
これが私のユーザーセッションクラスです:
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_back_or_default」メソッド ApplicationController:
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
これらはコードです 私 そのエラーを取得することには考えが関与する可能性があります。もっと明確にするためにさらにコードを追加する必要がある場合は、お知らせください。
解決
わかりました、最初に、あなたは悪いルートを持っています:
match '/login', :to => 'user_sessions#new', :as => 'login'
注意してください new
それ以外の destroy
また、TO_KEYは後のバージョンでは必要ありません - 私はRails 3を使用しており、ユーザーセッションモデルにはありません。
他のヒント
ログインを一致させないためにルートを変更するために、間違いなく破壊する必要があります。これが私が持っているルート設定です...(「レール付きのアジャイルWeb開発」の例から)。
controller :user_sessions do
get 'login' => :new
post 'login' => :create
delete 'logout' => :destroy
end
所属していません StackOverflow