1

Railsアプリの認証システムとしてAuthlogicgemを使用しています。これはUserSessionsControllerの私のコードです

class UserSessionsController < ApplicationController

  layout 'auth_layout'

  def new
    @user_session = UserSession.new
  end

  def create
    @user_session = UserSession.new(params[:user_session])
    if @user_session.save
      flash[:notice] = "Login successful!"
    else
      render :action => :new
    end
 end

 def destroy
   current_user_session.destroy
   redirect_to new_user_session_url
 end
end

アドレスバー/user_sessions/ destroyを入力するたびに、次のエラーが発生します。

Unknown action

The action 'show' could not be found for UserSessionsController

誰かがこれを解決する方法を知っていますか?ありがとう :)

4

1 に答える 1

1

以下を追加してくださいconfig/routes.rb

match "user_sessions/destroy" => "user_sessions#destroy", via: [:get]

user_sessionルートが定義されているresourceとするconfig/routes.rbと、destroyアクションのルートにはHTTPメソッドが必要であり、ブラウザのアドレスバーを介した(存在しない)DELETEルートへ/user_sessionsGETリクエストは失敗します。 /user_sessions/destroy

上記のルートを追加すると、 (存在しない)メソッドの代わりにコントローラーのメソッド/user_sessions/destroyをロードするためにアクセスしようとしているパスがマップされ、パラメーターとして渡されます。UserSessionsdestroy show"destroy":id

于 2012-07-11T17:20:52.373 に答える