2016-09-01 11 views
0

레일 4.2.7을 사용하고 있습니다. 특정 조건에 따라 필터를 정의하고 싶습니다. 내 응용 프로그램에서 페이지를 방문 할 때 그래서 내 before_filter 절에서 정의되지 않은 메소드 가져 오기

class ApplicationController < ActionController::Base 
    before_filter :store_last_page_visited unless logged_in? 

… 

    private 

    def current_user 
    @current_user ||= User.find_by(id: session[:user_id]) 
    end 

    def logged_in? 
    !current_user.nil? 
    end 

    def store_last_page_visited 
    session[:last_page_visited] = request.url 
    end 

    helper_method :current_user, :logged_in? 

는, 그러나이 나는

undefined method `logged_in?' for ApplicationController:Class Did you mean? logger 

무엇 내가 지정할 때 내 필터가 실행 얻을 다르게 어떻게해야합니까 오류를 얻을?

답변

0

before_filter은 클래스의 컨텍스트에서 실행됩니다.

#logged_in?은 클래스 인스턴스의 컨텍스트에서 정의됩니다.

이 시도 :

def store_last_page_visited 
    return if logged_in? 

    session[:last_page_visited] = request.url 
end