2010-02-25 5 views
26

은 분명 수 있습니다,하지만 여전히 나는 여기에 기본 지식의 부족 해요.레일 : format.js 또는 format.json, 또는 둘 다?

내부의 컨트롤러를 사용할 수 있습니까? 아니면 항상 자바 스크립트입니까? 둘 다 동일합니까?

+0

그들은 분리 된 MIME 형식이기 때문에 둘 다 사용할 수 있다고 생각합니다. 왜 그것을 시도하고 볼 수 있습니까? –

답변

23

레일즈 3.1의 유일한 차이점은 포매터가 js이면 대답이 일반 텍스트로 전송된다는 것입니다. json이면 json으로 인코딩됩니다.

경우

format.json { 
    render :json => @accounts.map(&:attributes) 
} 

서버 전송

format.json :

data:application/json;base64, 

경우 format.js

format.js { 
    render :json => @accounts.map(&:attributes) 
} 

서버 전송 :

[{"id":33,"email":"[email protected]"}] 
34

jsonjs 응답의 두 가지 종류가 있습니다 그들은 레일 JSON은 자바 스크립트의 부분 집합으로 간주 될 수있다하더라도

Mime::Type.register "text/javascript", :js, %w(application/javascript application/x-javascript) 
Mime::Type.register "application/json", :json, %w(text/x-json application/jsonrequest) 

에서 서로 다른 MIME 유형으로 정의되어, 모든 자바 스크립트 응답은 실제로 JSON 응답입니다.

동일한 행동 JSON과 JS로 응답 할 수 있습니다.

예를 들어, API 호출에 Json으로 응답하고 내부 Ajax 호출에 JavaScript (아마도 RJS 사용)로 응답하는 동작이있을 수 있습니다.

+3

정답 – Donato

관련 문제