2012-09-08 3 views
3

레일 3이 멈추고 몇 가지 작동하는 앱을 만들었습니다. 나는 자바 스크립트 또는 레일 jquery를 사용하여 새로운입니다. 나는 레일 3.2, devise 및 cancan으로 작동하는 응용 프로그램을 가지고 있습니다. 그런 다음 Jquery Mobile을 사용하도록 변환했습니다. 전체 응용 프로그램이 그것을 사용하고, 나는 데스크톱과 모바일을 구별하지 않았다. Jquery Mobile Rails & Devise 잘못된 자격증 명으로 로그인 할 때 페이지를로드하는 중 오류가 발생했습니다.

는 문제 : 일반적으로 모든 일에

는 몇 가지 작은 일을 제외하고 잘 작동합니다. 하나는 올바른 자격 증명을 사용하여 성공적으로 로그인 할 수 있으며 플래시에 로그인하면 플래시 플레이어가 로그인되었음을 나타냅니다. 잘못된 자격 증명으로 로그인하면 Error loading page (정상적인 플래시 메시지 없음)이 표시됩니다 (Invalid email or password). 다른 모든 플래시 메시지는 내가 볼 수있는 한 올바르게 표시됩니다 (노란색은 JQM에 의해 형식화 됨). 내가 지금까지했던 어떤

:

비슷한 문제에 대한 높고 낮은 검색하지만 기쁨 (가장 유사한 리디렉션하거나 페이지를 찾을 수 없습니다 오류가 있습니다). 파이어 버그에서 그것은 401 Unauthorized - Response - Invalid email or password를 보여줍니다.

나는 cancan 물건을 모두 주석 처리했다. (그것은 JQM 없이는 모두 작동한다.) 그리고 그것은 아무런 차이가 없다. 허가가없는 다른 곳으로 방향을 바꾸는 것이 아니다.

javascript/ajax가 정상적인 레일 동작을 변경하는 방법에 익숙하지 않지만 모든 포인터를 높이 평가할 수 있습니다.

답변

3

짧은 대답

이 당신이 그들을 편집 할 수 있도록 프로젝트로 유증에 대한 견해를 복사 rails g devise:views을 사용하는 것입니다 해결하는 가장 빠른 방법. 그런 다음 세션 컨트롤러에 대한 new.html 템플릿의 :url 후하여 form_for 라인 오른쪽에 다음을 추가 할 수 있습니다 :

:html => {:data => {:ajax => 'false'}} 

이이 양식은 아약스로 납치했다되어서는 안된다는 jQuery를 모바일을 말할 것이다 의뢰.

jQuery를 모바일 아약스 요청으로 그들을 설정하는 모든 형태의 링크를 공중 납치 것입니다 이유. 컨트롤러에 respond_to 블록을 설정하지 않으면 Rails는 설정 한 템플릿을 렌더링합니다. jQM은 필요한 페이지 div를 구문 분석하기 때문에 일반적으로 문제가되지 않습니다. 그러나 Devise의 컨트롤러 이 요청에 따라 다르게 반응하고 jQM이 처리 방법을 알지 못하는 ajax 응답을 수신하고 있습니다. 따라서 위의 가장 쉬운 해결책은 jQM이 서명 양식을 아약스 요청으로 변환하지 않는 것입니다. 다른 가능한 해결책으로는 세션 컨트롤러를 수정하거나 코드에 기본값 인 ajax success handler를 추가하여 응답이없는 200 응답을 확인하고 적절하게 처리하는 것 등이 있습니다.

+0

브릴 런트! 감사합니다! – andreofthecape

+0

여러분을 환영합니다! 기꺼이 도와주세요. – Aaron

+0

위의 내용은 저에게 적합하지 않았습니다. 나는해야만했다 :': html => { 'data-ajax'=> 'false'}' – bjnord

관련 문제