2010-02-25 4 views
26

Peut-être évident, mais il me manque encore des connaissances de base.Rails: format.js ou format.json, ou les deux?

Alors à l'intérieur des contrôleurs, peut-on utiliser les deux, ou est-ce toujours le Javascript, donc les deux sont les mêmes?

+0

Je crois que les deux peuvent être utilisés parce qu'ils sont des types MIME distincts. Pourquoi ne pas essayer et voir? –

Répondre

23

Dans Rails 3.1, la seule différence que je peux constater est que si le formateur est js, la réponse est envoyée en texte brut. Si c'est json alors il est codé comme json.

si format.json

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

envoyer serveur:

data:application/json;base64, 

si format.js

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

:

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

json et js sont deux différents types de réponse et ils sont définis comme différents types MIME dans 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) 

Même si JSON peut être considéré comme un sous-ensemble de JavaScript, toutes les réponses JavaScript sont en fait des réponses JSON.

Vous pourriez vouloir répondre avec Json et Js dans la même action. Par exemple, vous pourriez avoir une action qui répond avec Json à un appel d'API et avec JavaScript (peut-être en utilisant RJS) à un appel Ajax interne.

+3

La bonne réponse – Donato

Questions connexes