При маршрутизации ресурсов в Rails дополнительный атрибут формата автоматически добавляется к сгенерированным маршрутам. Это значит, что данный ресурс можно запросить как XML, HTML и т.д. Какие форматы, которые фактически разрешены, обычно описываются в контроллере с помощью respond_to
.
Но во многих случаях вы хотите только поддерживать HTML-код и чувствовать себя как накладные расходы, чтобы писать respond_to :html
в каждом действии в каждом контроллере. Поэтому было бы здорово, если бы там был способ ограничить допустимые типы контента уже при построении маршрутов в файле route.rb, например.
map.resources :users, :formats => :html
map.resources :users, :formats => [:html, :xml]
map.resources :users, :formats => {:index => :html, :show => [:html, :xml]}
Есть ли способ достичь этого либо нативного, либо через плагин?
P.S. Обычный способ обойти это - просто игнорировать проблему и не использовать respond_to
в действиях. Но это фактически не ограничивает допустимые типы контента. Вместо этого он просто ожидает, что шаблон существует в каталоге представлений для каждого возможного типа контента. Если по требованию не существует, система выдаст ошибку HTTP 500.