2010-02-25 7 views
26

Könnte offensichtlich sein, aber mir fehlt hier noch das Grundwissen.Rails: format.js oder format.json oder beides?

Also in Controller, kann beides verwendet werden, oder ist es immer Javascript, so sind beide gleich?

+0

Ich glaube, dass beide verwendet werden können, weil sie separate MIME-Typen sind. Warum nicht versuchen und sehen? –

Antwort

23

In Rails 3.1 ist der einzige Unterschied, den ich feststellen kann, dass der If-Formatierer js ist, dann wird die Antwort als reiner Text gesendet. Wenn es json ist, wird es als json codiert.

wenn format.json

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

Server senden:

data:application/json;base64, 

wenn format.js

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

Server senden:

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

json und js sind zwei verschiedene Arten von Reaktion und sie werden als verschiedene MIME-Typen in Rails definiert

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

Auch wenn Json eine Teilmenge von JavaScript in Betracht gezogen werden können, sind nicht alle JavaScript-Antworten sind tatsächlich Antworten Json.

Sie möchten vielleicht mit Json und Js in der gleichen Aktion antworten.

Zum Beispiel haben Sie möglicherweise eine Aktion, die mit Json auf einen API-Aufruf und mit JavaScript (möglicherweise mit RJS) zu einem internen Ajax-Aufruf reagiert.

+3

Die richtige Antwort – Donato

Verwandte Themen