Как заставить RABL выводить XML по умолчанию

Как принудительно вывести XML с помощью RABL? Он отображает JSON по умолчанию, что отлично работает. Когда я захожу на свою страницу с помощью

curl -H "Accept: application/xml" -X GET (myurl)

RABL отображает XML, как и ожидалось. Однако, когда я обращаюсь к тому же URL-адресу с помощью браузера, ответ находится в формате JSON. Я попытался установить

ActionView::Template::Handlers::Rabl.default_format = Mime::XML

так же как

render "index.rabl", :content_type => 'application/xml'

В этом случае rails возвращает application/xml в качестве типа контента, но по-прежнему возвращает JSON.

Как я могу отобразить XML-представление моих данных, не отправляя application/xmlв качестве единственного заголовка принятия?


person Malte    schedule 11.11.2011    source источник


Ответы (2)


Попробуйте добавить формат по умолчанию для вашего маршрута:

get 'your/url/matcher' => 'controller#method', :defaults => { :format => :xml }
person dmkash    schedule 27.03.2013

Какая у вас версия Rails? Я почти уверен, если вы сделаете это, например:

respond_to do |format|
  format.xml # renders rabl as xml
  format.json # render rabl as json
end

Но это в Rails 2. Я уверен, что есть эквивалент для 3.

person Nathan    schedule 11.11.2011
comment
Я использую Rails 3. Хм, добавление этого блока странно отображает пустую страницу. Я получаю XML (даже без блока), когда добавляю .xml к своему URL-адресу, но было бы неплохо, если бы он работал без этого. - person Malte; 11.11.2011
comment
Да, это вряд ли сработает на Rails 3. Рассматривали ли вы просто добавление простого фильтра перед, который устанавливает тип контента в XML для этого действия? - person Nathan; 11.11.2011