Rails массив to_xml - PullRequest
       2

Rails массив to_xml

1 голос
/ 11 марта 2011

У меня есть массив пользовательских объектов, которые я хочу вернуть как XML. Как я могу использовать to_xml, чтобы включить атрибуты в корневой элемент? Например

    <users total="10">
      <user>
      ..
      </user>
    </users>

Я знаю, что вы можете добавлять пользовательские элементы и атрибуты в xml, используя блок с методом to_xml, но я не уверен, как добавить его в корневой элемент. Может быть, есть другой способ, кроме использования to_xml

1 Ответ

1 голос
/ 11 марта 2011

Я использовал XML Builder. Следующий фрагмент кода охватывает некоторые хитрые XML-здания.

В вашем контроллере,

require 'builder'

def show_xml
  @xml = get_xml_data
  respond_to do |format|
    format.html # show.html.erb
    format.xml { render :xml => @xml }
  end
end

def get_xml_data
  xml = Builder::XmlMarkup.new#(:target=>$stdout, :indent=>2)
  xml.instruct! :xml, :version => "1.0", :encoding => "US-ASCII"
  xml.declare! :DOCTYPE, :html, :PUBLIC, "-//W3C//DTD XHTML 1.0 Strict//EN",  
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
  favorites = {
    'candy' => 'Neccos', 'novel' => 'Empire of the Sun', 'holiday' => 'Easter'
  }

  xml.favorites do
    favorites.each do | name, choice |
     xml.favorite( choice, :item => name )
    end
  end
end
...