2014-10-06 3 views
0

레일스를 처음 사용하고 통찰력을 얻었습니다. Rails 또는 Ruby의 버전을 업데이트하는 것은 불가능합니다. 클라이언트의 현재 버전을 사용해야합니다.레일즈 + AJAX가 예상보다 많은 HTML을 반환합니다.

루비 버전 : 나는 자바 스크립트/jQuery를 Ajax 호출을 통해 동적 HTML 내용에로드하고있어 3.2.18

: 1.9.3-p194은 버전을 레일. app/assets/javascripts/application.js 내부에서 Ajax 호출을 만들면 모든 것이 잘 작동합니다. 나는 다른 자바 스크립트에 대한 정확한 호출과 같은 해당 파일을 이동하는 경우,

그러나

HTML라는 응답 변수 /search/login.html.erb의 내부에있는 모든 HTML을 포함
$.ajax({ 
     url: '/search/login', 
     cache: true, 
     success: function(html){ 
      console.log('SUCCESS: ', html); 
     } 
    }); 

: 여기에 전화입니다 app/assets/javascripts/search/jh.js에서 반환 된 HTML을 제외하고는 모두 정상적으로 작동하는 것으로 보입니다. LOT 이상입니다. /search/login.html.erb의 내용 외에 <DOCTYPE>에서 </html>까지 전체 HTML DOM 트리가 실제로 포함됩니다.

왜 이런 일이 일어 났는지 이해해 주시겠습니까?

+1

당신은 컨트롤러의 render 문에서'layout : false'을 시도 했습니까? 컨트롤러 문제와 jQuery 문제보다 더 보입니다. – engineersmnky

+0

검색 컨트롤러에서 'login'과 'jh'코드를 모두 게시 할 수 있습니까? – Surya

+0

@engineersmnky 당신이 그것을 못 박았 어! 정말 고맙습니다. 답변으로 의견을 남기면 선택하겠습니다. 다시 한 번 감사드립니다! – ndcomix

답변

2

이 유형의 아약스 호출에 대한 레이아웃을 렌더링하지 않도록 지정해야합니다. 그렇지 않으면 Rails가이를 애플리케이션 또는 템플릿 레이아웃을 포함하는 표준보기 요청으로 처리합니다. 이렇게하려면 당신은 단지 컨트롤러

render layout: false 

이 레일은 바로이 컨트롤러에 지정된 응용 프로그램의 레이아웃이나 다른 템플릿없이 html.erb 파일을 처리하는 말에 렌더링 작업에 다음을 추가해야합니다.

관련 문제