2012-09-12 9 views
0

Chrome (버전 21) 자바 스크립트 콘솔에서 pjax를 호출하면 개발 로그에 두 개의 요청이 표시됩니다. this post에서 제안 된대로 제한 시간을 변경해 보았지만 여전히 두 가지 요청을 받았습니다. 어떤 아이디어?여러 요청을하는 pjax

$.pjax({timeout: 4000, 
     container: '[data-pjax-container]', 
     url: document.location.href }); 

답변

0

그래서 문제는 내가 HTTP 본문에서 아무 것도 반환하지 않는 응용 프로그램 템플릿을 렌더링하지 않는다는 것이 었습니다. 결과적으로 pjax 코드로 인해 요청이 표준 GET으로 대체되었습니다.

왜 응용 프로그램 템플릿을 렌더링하지 않았습니까? 글쎄, 난 여기서 문제는 내 index.html.haml에 content_for을 사용하고 있다는 점이다 더미를 해요 내 응용 프로그램 컨트롤러

def get_layout 
    request.xhr? || request.headers['X-PJAX'] ? nil : 'application' 
end 

에서이 방법을 사용했다.

- content_for :sub_nav do 
# view code 
- content_for :main do 
# view code 

내 application.html.haml 템플릿은

은 내가 응용 프로그램 도우미

def is_pjax? 
    request.xhr? || request.headers['X-PJAX'] ? true : false 
    end 
에 컨트롤러 메소드를 리팩토링 ... 여기
.col1 
    = yield :sub_nav 
.col2 
    = yield :main 

이 솔루션입니다 ...이처럼 보였다

그런 다음 응용 프로그램보기를 수정하여 header, footer, javascripts, css, 등

= render :partial => '/shared/footer' unless is_pjax? 

이제 .pjax 요청이 페이지와 템플릿 (주 왼쪽 열, 등)하지만 이미로드되어 있지 기존의 요소를 렌더링합니다.

다른 사람에게 도움이되기를 바랍니다.

+0

귀하의 앱이 http 본문에서 무엇을 반환하지 않은 이유는 무엇입니까? 그냥 템플릿을 반환하지 않을까요? – teaforthecat