Ruby on Rails XML - PullRequest
       8

Ruby on Rails XML

0 голосов
/ 21 декабря 2009

Я хочу создать приложение Rails, которое генерирует XML вместо HTML. Как мне это сделать?

Ответы [ 4 ]

5 голосов
/ 21 декабря 2009

У вас есть три варианта.

Параметр 1 предназначен для явного отображения автоматически сгенерированного XML.

render :xml => @object

, который будет вызывать @ object.to_xml для вас. Вы можете настроить вывод с параметрами:

render :xml => @object.to_xml(:except => [:private1, :private2], :include => [:associated_class])

Это очень быстро и просто. Это будет работать довольно хорошо, если вам не нужен жесткий контроль над выводом. Представление XML контролируется в контроллере, а не в представлении, что несколько грязно, но не так уж плохо, если вы не начинаете фантазировать.

Опция 2 заключается в создании шаблонов с именем .xml.erb вместо обычного .html.erb. Это просто файлы XML с нормальной разметкой ERB. Если приходит запрос на URL с XML-файлом в конце, поведение по умолчанию (с использованием обычных лесов в контроллере) состоит в отображении этих шаблонов вместо HTML-шаблонов). Часто строительные леса имеют блок вроде:

respond_to do |format|
  format.html # show.html.erb
  format.xml { render :xml => @object.to_xml }
end

В этом случае (при условии, что вы также хотите разрешить HTML) вы захотите удалить блок {} в строке format.xml, чтобы он вернулся к шаблону по умолчанию.

Вариант 3 - написать свой собственный объект -> отображение XML, используя что-то вроде Builder (который очень очень удобен и включен в Rails). Внезапно ваша модель беспокоится о своих взглядах.

Я бы предложил использовать опцию 1 , пока не начнутся проблемы (иногда, казалось бы, мягкое изменение приведет к изменению вывода XML - возможно, переупорядочив теги), а затем переключится на вариант 2. Наличие этих XML файлы там очень ясно дают понять, что именно отображается, так же, как файлы HTML. Вариант 3 работает, но вы смешиваете логику (остальную часть вашей модели) с презентацией.

2 голосов
/ 21 декабря 2009

Вы можете использовать библиотеку Builder для Ruby или использовать XML-сериализацию ActiveRecord .

1 голос
/ 21 декабря 2009

Здесь у вас есть:

http://www.xml.com/pub/a/2007/01/17/making-xml-in-a-rails-app-xml-builder.html

Надеюсь, это подойдет!

0 голосов
/ 21 декабря 2009

Вы пишете XML вместо HTML. Rails не особо заботится о том, что он обслуживает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...