2010-08-23 3 views
0

나는 정확히 튜토리얼을 따라 : http://github.com/binarylogic/authlogic_exampleRuby on Rail의 Authlogic gem을 사용하여 모든 페이지에 로그인 양식을 표시하려면 어떻게해야합니까?

하지만 내가 누군가가 로그인하지 않은 경우 로그인 양식을 모든 페이지에 표시 얻을 수있는 방법 궁금?

나는 Google을 검색하여 많은 포럼에서 답변을 찾았지만 찾을 수있는 유일한 해결책은 로그인 양식이있는 모든 페이지에 대해 @user_session = UserSession.new을 정의해야합니다.

내가하고 싶은 것은 application.html.erb 파일에 양식을 넣고 사람들이 로그 아웃했을 때만 나타납니다 (내가 관리해 봤음).

그러나 ApplicationController과 같이 하나의 컨트롤러에 @user_session = UserSession.new만을 넣고 싶습니다. 모든 단일 페이지에 코드를 삽입해야하는 것은 매우 비 RESTful입니다. application.html.erb에 양식 코드를 남겨두고 해당 코드가 컨트롤러의 페이지에 정의되어 있지 않으면 페이지에 오류가 발생합니다.

모든 페이지에 대해 정의 할 필요가 없습니다. 로그인 양식이나 다른 것을 제거하기로 결정한 경우 모든 단일 페이지에서 제거해야하는 많은 작업이 필요합니다.

간단히 말해, 내 사이트의 모든 단일 페이지에 로그인 양식을 넣으려는 경우 한 컨트롤러에 @user_session = UserSession.new 만 입력하면됩니다.

감사합니다.

답변

1

ApplicationController에서 다음과 같은 작업을 수행 할 수 있습니다

before_filter :prepare_new_session 

def prepare_new_session 
    @user_session = UserSession.new if current_user.blank? 
end 

(사용자가 현재 로그인하지 않은 경우) 즉, 당신에게 모든 작업에 대해 @user_session 객체를 줄 것이다. 그렇게하면 양식을 layouts/application.html.erb 파일에 배치하여 모든 페이지에 포함 할 수 있습니다.

+0

감사합니다. 이것은 내가 필요한 것입니다. :) – Felix