Подтвердить что ты не робот

Rails: format.js или format.json или оба?

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

Итак, внутренние контроллеры могут использоваться, или это всегда Javascript, поэтому оба они одинаковы?

4b9b3361

Ответ 1

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

if format.json

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

отправить сервер:

data:application/json;base64,

if format.js

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

отправить сервер:

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

Ответ 2

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.