2012-05-20 3 views
1

자바 스크립트를 통해 생성 작업이 호출되는 등급 컨트롤러가 있습니다. 내 등급 폴더에 create.js 파일이 있습니다. create.js 파일을 다음과 같이 호출해야한다고 생각했습니다..js 파일이 respond_to없이 호출 중임

respond_to do |format| 
    format.js 
end 

그러나 이것을 제거하면 create.js 파일이 여전히 호출되고 있습니다. create.js가 create 액션 (즉, 메소드 및 .js 파일의 이름) 내에서 호출되기 때문입니다. 감사!

업데이트 : format.js가 누락되면 DOM 요소를 찾을 수 없습니다. 예를 들어, 나는

$('#id_3').html('<%=escape_javascript render(:partial => 'show') %>'); 

내가 터미널에서 볼 수 있듯이 실행됩니다 부분 '쇼'같은 것을 가지고 있지만 사업부 'id_3'와 DOM에 표시되지 않습니다 따라서 부분을 찾을 수 없습니다. 모든 선명도, 감사의 뜻을 표합니다

답변

1

이것이 바로 Rails의 작동 방식입니다. 작업과 이름이 같은보기를 렌더링합니다.

def index 
    respond_to do |format| 
    format.js { ... } 
    format.html { ... } 
    ... 
    end 
end 

GET /index.html가 렌더링됩니다 : 당신이 (다른 형식) 같은 이름을 가진 여러 뷰가있는 경우

, 당신은 당신이 요청에 할 일을 지정하고 그에 따라 대응할 수있는 respond_to 방법을 사용해야합니다 index.html.erb 파일이 일어나고 있는지 그 이유는 내 질문되었으며, index.js.erb 파일

2

레일즈 마술! 리소스에 대한 링크가 /dogs/1.js와 같으면 respond_to가 상상하는대로 처리합니다./dogs/1에게 전화해서 무슨 일이 일어나는 지보십시오. 아직도 작동합니까? 이제 format.html을 format.js 앞에 추가하십시오. 그것은 respond_to가 어떻게 작동하는지에 대한 좋은 아이디어를 줄 것입니다.

+0

그것은 respond_to없이 create.js를 부르고을 렌더링

GET /index.js (당신이 ERB를 사용하는 가정) – Steve

관련 문제