2010-02-25 21 views
26

Có thể hiển nhiên, nhưng tôi vẫn còn thiếu kiến ​​thức cơ bản.Đường ray: định dạng.js hoặc format.json hoặc cả hai?

Vì vậy, bên trong bộ điều khiển, cả hai đều có thể được sử dụng hoặc luôn là Javascript, vì vậy cả hai đều giống nhau?

+0

Tôi tin rằng cả hai có thể được sử dụng bởi vì chúng là các loại MIME riêng biệt. Tại sao không thử nó và xem? –

Trả lời

23

Trong Rails 3.1 sự khác biệt duy nhất tôi có thể phát hiện là nếu trình định dạng là js, thì câu trả lời được gửi dưới dạng văn bản thuần túy. Nếu nó là json thì nó được mã hóa thành json.

nếu format.json

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

máy chủ gửi:

data:application/json;base64, 

nếu format.js

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

máy chủ gửi:

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

jsonjs hai loại khác nhau của phản ứng và chúng được định nghĩa như các loại MIME khác nhau trong 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) 

Thậm chí nếu Json có thể được coi là một tập hợp con của JavaScript, không phải tất cả phản ứng JavaScript thực sự là Json câu trả lời.

Bạn có thể muốn phản hồi với Json và J trong cùng một hành động.

Ví dụ: bạn có thể có một hành động phản hồi với Json đối với cuộc gọi API và với JavaScript (có thể sử dụng RJS) cho cuộc gọi Ajax nội bộ.

+3

Câu trả lời đúng – Donato

Các vấn đề liên quan