Beim Routing von Ressourcen in Rails wird das optionale Format-Attribut automatisch an die generierten Routen angehängt. Dies dient dazu, dass die betreffende Ressource entweder als XML, HTML usw. angefordert werden kann. Welche Formate tatsächlich erlaubt sind, wird normalerweise im Controller mit respond_to
.
Aber in vielen Fällen möchte man nur HTML unterstützen, und es scheint ein Overhead zu sein, die respond_to :html
in jeder Aktion in jedem Controller. Es wäre daher cool, wenn es eine Möglichkeit gäbe, die erlaubten Inhaltstypen bereits beim Erstellen der Routen in der Datei routes.rb zu begrenzen, z.B.
map.resources :users, :formats => :html
map.resources :users, :formats => [:html, :xml]
map.resources :users, :formats => {:index => :html, :show => [:html, :xml]}
Gibt es eine Möglichkeit, dies entweder nativ oder über ein Plugin zu erreichen?
P.S. Der übliche Weg, dies zu umgehen, besteht darin, das Problem einfach zu ignorieren und nicht zu verwenden respond_to
in den Aktionen. Dies schränkt jedoch die zulässigen Inhaltstypen nicht ein. Stattdessen wird lediglich erwartet, dass für jeden möglichen Inhaltstyp eine Vorlage im Verzeichnis views existiert. Wenn eine solche nicht vorhanden ist, wird ein HTTP 500-Fehler ausgegeben.