Zastanawiam się tylko, jak szyny wie format żądania, aby poprawnie wpisać w słynnym:W jaki sposób szyny określają format przychodzącego żądania?
respond_to do |format|
format.html
format.xml
format.json
end
Jako przykład rozważ tę sytuację mam sprostała. Załóżmy, że za pośrednictwem javascript (jQuery) I uczynić żądanie POST expliciting Typ danych: json
$.ajax({
type: 'POST',
url: 'example.com',
data: data,
dataType: 'json'
});
Gdy wniosek ten zasięg działania kontrolera, stojąc w środku z rubinem debugger, ja skontrolować @ request.format i widzę ten typ treści to application/json. Następnie kontroler odpowiada na format json zgodnie z oczekiwaniami.
Ale jestem zdezorientowany z symbolem formatu określonym na trasach. Załóżmy, że żądanie jest wysyłane na adres przyklad.com/parts.json, ale w żądaniu typem treści jest application/html lub application/xml. Czy kontroler odpowiada na format json lub html lub xml ??
Dzięki!
Dzięki! Ale nie mogę już zrozumieć, co oznacza: symbol formatu, który pojawia się na routes.rb na przykład. Ponieważ jeśli wyślę żądanie do mojego serwera (na przykład GET /entities.xml) iw moim kontrolerze mam xml respond_to handler, nagłówek accept mówi app/XML w Google Chrome inspector. Jest coś w środku, czego nie rozumiałem już. Czy Rack jest tym, który widzi adres .xml w adresie URL i zgodnie z nim tworzy odpowiedni ŻĄDANIE z odpowiednimi nagłówkami akceptacji? Dzięki jeszcze raz! – flyer88
Zasadniczo: xml jest jednym z zarejestrowanych typów mime https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/http/mime_types.rb W tym miejscu łączysz typ MIME z : symbol formatu. Ten symbol jest używany do wywoływania odpowiedniego renderera, który jest zarejestrowany w ActionController :: Renderers. – mikewilliamson