Rails: format.js или format.json или оба? - PullRequest
27 голосов
/ 25 февраля 2010

Может быть, это очевидно, но мне все еще не хватает базовых знаний.

Так что внутри контроллеров можно использовать оба или всегда Javascript, так что оба одинаковы?

Ответы [ 2 ]

38 голосов
/ 26 февраля 2010

json и js - это два разных типа ответа, и они определены как разные типы MIME в 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 )

Даже если Json можно считать подмножеством JavaScript, не все ответы JavaScript на самом деле являются ответами Json.

Возможно, вы захотите ответить Json и Js одним и тем же действием.

Например, у вас может быть действие, которое Json отвечает на вызов API и JavaScript (возможно, с использованием RJS) на внутренний вызов Ajax.

23 голосов
/ 22 ноября 2011

В Rails 3.1 единственное отличие, которое я могу заметить, состоит в том, что если форматтер js, то ответ отправляется в виде простого текста. Если это json, то он кодируется как json.

если format.json

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

отправка сервера:

data:application/json;base64,

если format.js

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

отправка сервера:

[{"id":33,"email":"user1@example.com"}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...