2012-06-19 6 views
1

이상한 행동을합니다. 빨간색 또는 오류 메시지를 표시하지만 녹색 또는 성공 메시지를 표시하지 않습니다.성공한 메시지가 표시되지 않음

사용자가 로그인했는지 여부에 따라 로그인 페이지 또는 홈 페이지로 리디렉션하도록 라우팅 및 컨트롤러를 변경 한 후에 이런 일이 발생했습니다.

는 그래서 routes.rb 이제이 있습니다

devise_for :users 

root :to => "questions#redirect_on_visit" 

match 'home', :to => "questions#index" 

및 컨트롤러 :

before_filter :authenticate_user!, :except => [:redirect_on_visit] 

def redirect_on_visit 
    if user_signed_in?  
    redirect_to home_path  
    else  
    redirect_to new_user_session_path  
    end 
end 

또한 변경된 응용 프로그램 컨트롤러를 로그인/로그 아웃 한 후 해당 페이지로 리디렉션 :

protected 

def after_sign_in_path_for(resource)  
    stored_location_for(:user) || root_path  
end 

private 

def after_sign_out_path_for(resource) 
    stored_location_for(:user) || root_path  
end 
+1

로그인하거나 로그 아웃 할 때 플래시 객체에서 무엇을 볼 수 있습니까? 그 정보를'flash [: notice]'로 쓰고,'flash [: success] '가 아니라고 쓰는 것 같아요. – Viren

+0

예! 그것은 물론'flash [: notice]'입니다. 성공한 메시지 란 사용자가 로그인하거나 성공적으로 로그 아웃했다는 메시지를 말합니다. Devise는 녹색 배경으로 표시합니다. – Humming

+0

배경색은 확실하지만 플래쉬 메시지가'devise.yml' ('config/locales' 디렉토리) 파일을 검사하면 더 많은 통찰력을 얻을 수 있습니다 – Viren

답변

3

같은 after_sign_out_path_for

뭔가를 작성하는 더 나은 것 같아요 하나의 요청 만두고있다 극도로 마비. 내가 root :to => "questions#redirect_on_visit"이라는 사실은 사용자가 방문하거나 로그인하거나 로그 아웃 할 때마다 리디렉션됩니다. 리디렉션이 플래시 메시지를 분명히 씻어 내고있었습니다.

마지막으로 나는 내가 찾고 있던 해결책을 발견했다. 플래시 메시지 flash.keep(:notice)을 설명한대로 here과 같이 보존합니다.

0

에서 여러 방향 전환이 문제가됩니다. 로그인 => 루트 => h 오메 플래시 객체로서 는 생명이

내가 뭔가 after_sign_in_path_for에서 redirect_on_visit 라우팅과 내가있는 한이

def after_sign_in_path_for(resource)  
    stored_location_for(:user) || home_path  
end 

private 

def after_sign_out_path_for(resource) 
    stored_location_for(:user) || new_user_session_path 
end 
+0

아니요. 잘못이 아닙니다. 'redirect_on_visit'는 사용자가 로그인하기 전에 작동하지만,이 두 메소드는 사용자가 로그인 또는 로그 아웃 한 후에 작동합니다. – Humming

+1

@Humming 아마 당신은 내가 문제라고 생각한 것을 얻지 못했을 것입니다. 사용자를 인증하면 사용자를 'root_path'로 리다이렉션합니다. 이제 질문 # redirect_on_visit입니다. 'redirect_on_visit'에서'user_signed_in? '을 사용하여 로그인 한 사용자가'home' 페이지로 리다이렉트했기 때문에 플래시 메시지가 사라지면 스스로에게 유리하게'redirect_on_visit'의'if statement'에'debugger'를 추가하십시오 '그리고 플래시 내용을 살펴보면 – Viren

+1

@humming_humming_humming_slash_login_flash 메시지가 하나의 요청에 대해서만 우세한 것처럼 이전에 말했던 것처럼 bcoz가 플래쉬 메시지를 잃어 버렸습니다. – Viren

관련 문제