2012-07-11 43 views
1

我使用Authlogic gem作爲Rails應用程序的身份驗證系統。這是我在UserSessionsControllerrails authlogic gem - 銷燬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鍵入時間/銷燬,我得到以下錯誤代碼:

Unknown action 

The action 'show' could not be found for UserSessionsController 

有誰知道如何解決這個問題?謝謝:)

+0

用耙子檢查您的路線 – 2012-07-11 17:12:47

回答

1

以下內容添加到您的config/routes.rb

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

假設你有定義爲resourceuser_session航線的config/routes.rb,該destroy行動的路線需要的HTTP方法是DELETE/user_sessions,使得GET請求(不存在)/user_sessions/destroy路由通過瀏覽器的地址欄失敗。

加入上述路線的地圖,你正在試圖訪問加載,而不是(不存在)show方法UserSessions控制器的destroy方法,傳遞"destroy":id PARAM的/user_sessions/destroy路徑。

+0

這使它工作!謝謝:)雖然我不得不把這一行之前的資源:user_sessions行在我的routes.rb – 2012-07-11 17:41:04

+0

這很有趣;在我的應用程序中,這不是必需的(它實際上從資源中獲得了完全不同的路線名稱)。很高興它整理出來。 – deefour 2012-07-11 17:42:00