2016-08-20 27 views
0

私はRailsに新しく、ユーザーセッションを破壊しようとすると困っています。ライン: 私のセッションコントローラは、Iが呼ぶときのセッション/破棄する」およびセッションを破壊しようと、このRailsセッション[:user_id]は破棄しないでください

class SessionsController < ApplicationController 
    def new 
    end 

    def create 
     name = params[:name] 
     password = params[:password] 

     user = User.authenticate(name, password) 

     if user.nil? 
      render json: {isLogin: false} 
     else 
      session[:user_id] = user.id 
      render json: {isLogin: true} 
     end 
    end 

    def destroy 
     session[:user_id] = nil 
     puts session[:user_id] # Nothing gets printed to the console here 
     render json: {isLogin: false} 
    end 
end 

のように見え、何も「[USER_ID]セッション置く」をで印刷されないされます。だから私は、セッションがその時点ではゼロであることを確かに知っています。しかし、問題は、そのユーザーのセッションを破棄しても、別のコントローラからこのようにセッションにアクセスできることです。

class LessonsController < ApplicationController 

    def getLesson 
     userId = session[:user_id] 
     # do stuff 
    end 

end 

どうしてですか?どのように私はこれを修正できますか?

+0

あなたはどのようにルートに電話しますか?どのように経路を定義しましたか? 'getLesson'では;何が印刷されますか? – Ven

+0

これは、[レールでセッション変数をクリアするにはどうすればよいですか?](http://stackoverflow.com/questions/3995816/what-is-the-best-way-to-clear -a-session-variable-in-rails) – Ven

+0

um ..ルビーコンソールに「puts nil」しようとすると、何が印刷されますか? ;) – siegy22

答えて

0

は、私が過去に運を持っていたものです

session.delete(:user_id) 

代わりの

session[:user_id] = nil 

を試してみてください。

関連する問題