Chrome (버전 21) 자바 스크립트 콘솔에서 pjax를 호출하면 개발 로그에 두 개의 요청이 표시됩니다. this post에서 제안 된대로 제한 시간을 변경해 보았지만 여전히 두 가지 요청을 받았습니다. 어떤 아이디어?여러 요청을하는 pjax
$.pjax({timeout: 4000,
container: '[data-pjax-container]',
url: document.location.href });
Chrome (버전 21) 자바 스크립트 콘솔에서 pjax를 호출하면 개발 로그에 두 개의 요청이 표시됩니다. this post에서 제안 된대로 제한 시간을 변경해 보았지만 여전히 두 가지 요청을 받았습니다. 어떤 아이디어?여러 요청을하는 pjax
$.pjax({timeout: 4000,
container: '[data-pjax-container]',
url: document.location.href });
그래서 문제는 내가 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 요청이 페이지와 템플릿 (주 왼쪽 열, 등)하지만 이미로드되어 있지 기존의 요소를 렌더링합니다.
다른 사람에게 도움이되기를 바랍니다.
귀하의 앱이 http 본문에서 무엇을 반환하지 않은 이유는 무엇입니까? 그냥 템플릿을 반환하지 않을까요? – teaforthecat