2010-02-25 13 views
26

Puede ser obvio, pero aún me faltan aquí los conocimientos básicos.Rieles: format.js o format.json, o ambos?

Así que los controladores internos, ambos se pueden usar, ¿o siempre es Javascript, por lo que ambos son iguales?

+0

Creo que ambos se pueden usar porque son tipos MIME separados. ¿Por qué no probarlo y ver? –

Respuesta

23

En Rails 3.1 la única diferencia que puedo detectar es que el formateador if es js, luego la respuesta se envía como texto sin formato. Si es json, entonces está codificado como json.

si format.json

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

servidor de envío:

data:application/json;base64, 

si format.js

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

servidor de envío:

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

json y js son dos tipos diferentes de respuesta y que se definen como diferentes tipos MIME en Rails

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

Incluso si JSON se puede considerar un subconjunto de JavaScript, no todas las respuestas de JavaScript son en realidad las respuestas JSON.

Es posible que desee responder con Json y Js en la misma acción.

Por ejemplo, es posible que tenga una acción que responda con Json a una llamada API y con JavaScript (tal vez con RJS) a una llamada Ajax interna.

+3

La respuesta correcta – Donato

Cuestiones relacionadas