2011-04-18 1 views
2

블로그 응용 프로그램에서 모든 사용자가 양식을 액세스하여 의견을 게시하고 싶습니다.레일 3 - signign 후 양식으로 리디렉션

사용자는 한번 사용자 sign_in가, 코멘트 양식에 그를 리디렉션 할 수있는 방법.

before_filter :authenticate_user!, :except => [:index, :show, :new] 

를 로그인하지 않은 경우 그가 고안 sign_in 형태로 재 코멘트 양식을 제출하고 모든 필드를 채울 때 ?

답변

4

당신이와 ApplicationController에 추가 모든 기호 다음에 양식을 언급 사용자를 가지고 싶다면 :

#after_sign_in_path_for is called by devise 
def after_sign_in_path_for(resource_or_scope) 
    comment_path... 
end 

을 다시 그들이 이전에 로그인에 있었다 페이지에 대한 사용자를 가지고 싶다면, 당신은 절약 할 수 현재 컨트롤러 + 세션에서 작업을 다시 재 : 다음

session[:pre_login_controller] = params[:controller] 
session[:pre_login_action] = params[:action] 

과 : 나는 당신의의를 혼합 한

def after_sign_in_path_for(resource_or_scope) 
    if session[:pre_login_controller] && session[:pre_login_action] 
    "#{session[:pre_login_controller]}/#{session[:pre_login_action]}" 
    else 
    some default path -- root url or comment path etc 
    end 
end 
+0

olution과 Warden :: Manager.before_failure 그리고 그것은 훌륭하게 작동합니다! – invaino

2

여러 솔루션이 있습니다 사전에

감사는 고안 로그인 후 이전 URL로 리디렉션에 대한 스택 오버플로에 강조했다.

이 아마 가장 논리적 인 해결책이며, (내가 사용하는 것이 좋습니다) 캉캉를 포함하는 솔루션

Rails: Warden/Devise - How to capture the url before login/failed access 형태의 충전에 관해서는

, 나는 간단한 해결책이 될 것이라고 생각도있다 코멘트 박스를 처음부터 제한합니다. 사용자가 로그인했는지 확인하십시오 (저는 Devits가 user_signed_in입니까?) 그리고 user_signed_in입니까? else "댓글을 달려면 로그인해야합니다." #new와 같은 동작에 주석이 있다면 devise를 통해 전체 새로운 동작을 제한 할 수 있습니다. 그것을 위해서, 당신을 제거하십시오 : 신원 확인에서 "예외".