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

Как рельсы определяют формат входящего запроса?

Мне просто интересно, как рельсы знают формат запроса, чтобы правильно войти в знаменитый:

respond_to do |format|
  format.html
  format.xml
  format.json
end

В качестве примера рассмотрим эту ситуацию, с которой я столкнулся. Предположим, что с помощью javascript (с использованием jQuery) я делаю запрос POST с помощью выражения dataType: json

$.ajax({
      type: 'POST',
      url: 'example.com',
      data: data,
      dataType: 'json'
    });

Когда этот запрос достигает действия контроллера, находящегося внутри него с отладчиком ruby, я проверяю @request.format, и я вижу, что контент-тип - application/json. Затем контроллер реагирует на формат json, как и ожидалось.

Но я смущен символом формата, определенным на маршрутах. Предположим, что запрос сделан в example.com/parts.json, но в запросе тип содержимого - application/html или application/xml. Отвечает ли контроллер на json-формат или html или xml?

Спасибо!

4b9b3361

Ответ 1

От ActionController:: MimeResponds: "Rails определяет желаемый формат ответа из заголовка HTTP Accept, представленного клиентом".