2011-03-28 2 views
8

AJAX 로그인으로 devise를 사용하는 데 문제가 있습니다. :remote => true 옵션과 jQuery 버전의 자바 스크립트 도우미 (https://github.com/rails/jquery-ujs)를 사용하고 있습니다. 사용자가 올바른 정보를 입력하면 세션보기 내의 create.js.erb가 렌더링됩니다. 이것은 괜찮습니다. 왜냐하면 JS를 사용하여 내 사용자를이 파일에 리디렉션 할 수 있기 때문입니다. 그러나 오류가 발생하면 예를 들어 사용자가 잘못된 정보를 입력하면 플래시 메시지 만 오류 코드 401 - Unauthorized과 함께 응답합니다. 따라서 뷰나 create.js.erb 또는 sth else가 렌더링되지 않습니다. 그러나이 메시지를 측면에 표시하여이 메시지를 처리하여 사용자가 피드백을 받도록하고 싶습니다.레일 3과 리모컨 => true로 작성하십시오.

또한 respond_to :js으로 내 사용자 지정 컨트롤러를 구현하고 보조자 인증 방법 :recall을 사용하여 재생하려고했습니다. 그러나 그것은 효과가 없습니다.

아무도이 문제를 해결하기위한 몇 가지 모범 사례를 알고 있습니까? 아니면이 도우미 메서드를 피하고 그냥 ajax 호출에 대해 순수한 jQuery를 사용해야합니까? 그냥 폼에 이벤트를 바인딩 레일 3에서 : "오류 아약스"

들으, 턱시도

답변

9

당신은 jQuery를 이벤트를 사용할 수 있습니다.

jQuery(function($) { 
    $("#new_model").bind("ajax:error", function(event, data, status, xhr) { 
    alert("something went wrong"); 
    }); 
}); 

사용할 수있는 이벤트에 대한 자세한 내용은 blog post을 참조하십시오.

+0

답장을 보내 주셔서 감사합니다. 그것은 나를 위해 일했다. 그러나 나는 ajax를 대체해야한다 : ajax와 실패 : error – 23tux

+0

나는 나의 대답을 업데이트했다. 다른 사람들은 코멘트를 읽지 않는다. –

1

은 여기 내 버전

<script> 
    $(document).ajaxError(function(e, XHR, options){ 
    if (XHR.status == 401){ 
     window.location.replace("<%= new_user_session_path %>"); 
    } 
    }); 
</script> 

그것은 자동으로 로그인 페이지로 사용자를 리디렉션 및 페이지의 모든 요소에 대해 작동합니다.

관련 문제