2010-07-01 1 views
2

is_logged_in?이라는 함수를/lib 디렉토리에 저장된 사용자 정의 라이브러리에 정의했습니다. 내보기 중 하나 (이 경우에는 _menu.html.erb보기)에서 사용하려고합니다. "정의되지 않은 메서드 인 is_logged_in"이 나타납니다. # "오류가 발생했습니다. 그 방법이/lib 디렉토리에서 사용 가능하다면 응용 프로그램을 통해 액세스 할 수 있다고 가정했습니다.Ruby on Rails - app/views/layouts/_menu.rhtml에서 /lib/login_system.rb의 사용자 정의 lib 함수에 액세스하십시오.

module LoginSystem 
    protected 

    def is_logged_in? 
    @logged_in_user = User.find(session[:user]) if session[:user] 
    end 

    def logged_in_user 
    return @logged_in_user if is_logged_in? 
    end 

    def logged_in_user=(user) 
    if !user.nil? 
     session[:user] = user.id 
     @logged_in_user = user 
    end 
    end 

    def self.included(base) 
    base.send :helper_method, :is_logged_in, :logged_in_user 
    end 
end 

를 다음과 같이 내 _menu.html.erb 파일은 다음과 같습니다 :

<ul> 
<li><%= link_to 'Home', '/' %></li> 
<li><%= link_to 'Edit Page', pages_path %></li> 

<li><hr size = "1" width = "90%" aligh = "left" /></li> 

<% if is_logged_in? %> 
    <li> Logged in as: <i><%= logged_in_user.username%> </i></li> 
    <li><%= link_to 'Logout',{:controller => 'account', :action => 'logout'}, :method => :post%> </li> 
<% else %> 
    <li><%= link_to 'Signup', :controller => 'users', :action => 'new' %> </li> 
    <li><%= link_to 'Login', :controller => 'account', :action => 'login' %></li> 
<% end %> 
</ul> 

수있는 사람 점은 내가 잘못 갔어요 경우 다음과 같이

내 login_system.rb 파일은?

버나드

+0

Woops의 _menu 파일은 실제로 위에 지정된대로 _menu.rhtml - NOT _menu.html.erb입니다. 이것이 차이를 만들지 확실하지 않은가요? – mrbernz

+0

그냥 알아 냈어 ... 실패한 login_system.rb 파일에 STUPID 구문 오류가 있습니다. 나는 잊었다? helper_method, : is_logged_in, 다음 문 ... 데프 self.included (기본) base.send에 LOGGED_IN_USER 끝 필요한 는 데프 self.included (기본) base.send로 변경 : helper_method를 , : is_logged_in ?, : logged_in_user end Gggrrr .... – mrbernz

답변

2

편집 귀하와 ApplicationController :

class ApplicationController < ActionController::Base 
    include 'login_system' 
end 
+0

내 응용 프로그램 컨트롤러에 이미 있습니다. 클래스 ApplicationController mrbernz

0

는 또한 devise을 시도 할 수도 있습니다. 로그인/로그 아웃 계정에 대해 심각하게 다른 요구 사항이 없다면 정말 좋습니다!