2012-12-10 1 views
2

하나의 레일 (3.2.6) 앱에 ujs를 성공적으로 추가했습니다. 내 양식 태그에 : remote => true를 추가하면 js.erb 파일에 div 등 동적로드를위한 ajax 호출을 할 수 있습니다.UJS와의 문제

하지만 동일한 시스템 (Ubuntu 12.0.4)의 다른 응용 프로그램에서는 , ujs 엔진이 작동하지 않는 것 같습니다. 양식이 js보다는 format => html을 전송하기 때문에 항상 템플릿을 찾을 수 없습니다. js 형식 (형식 => 'js')을 사용하도록 양식을 강제하면 jjb 파일을 ajax를 통해 호출하는 대신 js.erb 파일을 렌더링합니다. application.js에서

, 나는에 적절한 헤더를 포함 한 다음 실제로 응용 프로그램 레이아웃을 사용하고 기본 홈 페이지를 탐색 할 때 자바 스크립트 파일이 포함되어 있습니다

//= require jquery 
//= require jquery_ujs 
//= require_tree . 

을하는 위에서 언급 한 javascirpt 참조를 포함합니다. 다음과 같이 페이지의 형식은 다음과 같습니다

<%= form_tag list_path, :remote => true, :id => 'frmBookResults', :method => :post do %> 

을하지만이 포함되어 있지만 : 원격 => 사실, 나는 나열 list.js.erb을 변경하는 경우 때문에 list_path (경로 작품으로 설립 된 경로가있다 .html.erb, 뷰 렌더러)와 요청을 처리하는 컨트롤러의 메소드 (def list ... end)에서 후속 list.js.erb가 무시되고 템플릿을 찾을 수 없다는 오류가 발생합니다. 왜냐하면 레일 html로 양식 요청을 처리 중이며 로그에서 확인할 수 있습니다.

나는 해결책을 찾을 수있는 모든 곳을 수색했지만, 내 응용 프로그램, gemset, 버전 및 구성과 거의 동일 할 때 내 ujs가이 특정 응용 프로그램에서 작동하지 않는 이유를 알아낼 수 없습니다.

사람들이 같은 문제가있는 스택 오버플로에 대한 몇 가지 다른 기사를 찾았지만 최종 결과는 없습니다.

도움이나 방향에 대해 크게 감사드립니다.

+1

확인할 사항 : 1. 양식의 브라우저에서 실제 HTML이 어떻게 표시됩니까? 2. 페이지를로드 할 때 브라우저의 콘솔 로그에 오류가 있습니까? 3. 양식이 파일 업로드를 시도하지 않는다는 것을 확인할 수 있습니까? 4. 컨트롤러 상단에 글로벌'respond_to'가 없다는 것을 확인할 수 있습니까? – mccannf

+0

1. 양식은 data-remote = "true"로 올바르게 렌더링 된 것처럼 보입니다. 2. 페이지를 렌더링 할 때 경고 메시지가 나타납니다. '응답 본문의 내용 길이를 결정할 수 없습니다. 응답의 내용 길이를 설정하거나 Response # chunked = true'로 설정합니다. 3. 양식에서 파일을 업로드하려고하지 않고 로그가 다음과 같이 표시되므로 html로 처리하려고합니다. 2012-12-10 19:35:45 -0500에 127.0.0.1에 POST를 시작했습니다./book/list BookController # list에서 HTML (js이어야 함)으로 처리합니다. 4.컨트롤러에는 정의와 공백의 def list ... end 메서드를 제외하고는 코드가 없습니다. –

+0

BookController 상단에'respond_to : html, : js'를 추가하면 어떻게됩니까? – mccannf

답변

1

실제로 아약스가 고장났습니다. 다음

<%= form_tag list_path, :id => 'frmBookResults', :remote => true do %> 
    <input id='keyword' type='text' onkeyup='document.forms["frmBookResults"].submit();'/> 
<% end %> 

참고 : 다음과 같이 내가 양식을 제출하기 위해 사용 된 onKeyUp에 트리거이었다 분명히

document.forms["frmBookResults"].submit(); 

, 자바 스크립트를 통해이 문제를 양식을하고 제출을, 나는 onKeyUp에로 업데이트 할 때 때문에 아래와 같이 제출 JQuery와를 사용 UJS가에서 걷어 내 list.js.erb에 아약스 호출했다 레일 : 모든 피드백 mccanff에 대한

onkeyup="jQuery('#frmBookResults').submit()" 

감사합니다! linkedIn의 레일 그룹의 다른 개발자와 함께 귀하의 공헌은 마침내 내 문제를 해결하는 데 도움이되었습니다.