Я просто интересно, как рельсы знает формат запроса, чтобы правильно войти в знаменитый:Как рельсы определяют формат входящих запросов?
respond_to do |format|
format.html
format.xml
format.json
end
В качестве примера рассмотрим эту ситуацию я столкнулся вверх. Предположим, что с помощью JavaScript (с помощью JQuery) Я делаю запрос POST expliciting DATATYPE: JSon
$.ajax({
type: 'POST',
url: 'example.com',
data: data,
dataType: 'json'
});
Когда этот запрос действие контроллера досягаемость, стоя внутри него с рубином отладчик, я инспектировать @ request.format и я могу видеть что контент-тип - application/json. Затем контроллер реагирует на формат json, как и ожидалось.
Но я смущен символом формата, определенным на маршрутах. Предположим, что запрос сделан в example.com/parts.json, но в запросе тип содержимого - application/html или application/xml. Контроллер реагирует на формат json или html или xml?
Спасибо!
Спасибо! Но я уже не могу понять, что означает символ формата, который отображается в route.rb, например. Потому что, если я отправлю запрос на мой сервер (например, GET /entities.xml), а в моем контроллере у меня есть обработчик xml response_to, заголовок accept сообщает application/XML в инспекторе google chrome. Что-то посередине, которое я еще не понял. Является ли стойка той, которая видит .xml в URL-адресе и в соответствии с этим строит подходящий запрос с подходящими принимающими заголовками? Еще раз спасибо! – flyer88
В основном: xml - один из типов mime, зарегистрированных здесь https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/http/mime_types.rb. Здесь вы соединяете тип mime с : символ формата. Этот символ используется для вызова соответствующего средства визуализации, которое зарегистрировано в ActionController :: Renderers. – mikewilliamson