rails - to_xml размещение значений в атрибутах xml, а не в тегах - PullRequest
6 голосов
/ 28 января 2011

Предположим, у меня есть такой метод контроллера, как ...

def index
  @burried_treasures = BurriedTreasure.all
  render :xml => @burried_treasure
end

Сейчас он помещает все значения в теги, такие как:

<burried_treasure>
  <name>Red Beard</name>
</burried_treasure>

Я хотел бы использовать атрибутыкак это:

<burried_treasure name="Red Beard">

Кто-нибудь знает, как это сделать?

1 Ответ

5 голосов
/ 28 января 2011

Вам придется переопределить ваши модели методом to_xml

class BurriedTreasure < ActiveRecord::Base
    def to_xml(options = {})
      options[:indent] ||= 2
      xml = options[:builder] ||= Builder::XmlMarkup.new(:indent => options[:indent])
      xml.instruct! unless options[:skip_instruct]
      xml.buried_treasure('name' => self.name)
      xml.some_nodes do |some_node|
            some_node.some_level2_node "some_level_2_node_content"
      end   
    end
  end

Подробнее об использовании Builder :: XmlMarkup см. http://ap.rubyonrails.org/classes/Builder/XmlMarkup.html

...