Как рельсы определяют формат входящего запроса? - PullRequest
11 голосов
/ 06 июня 2011

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

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 ??

Спасибо!

1 Ответ

7 голосов
/ 06 июня 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...