Как я могу использовать XML Builder для создания XML в рельсах? - PullRequest
0 голосов
/ 29 мая 2010

Я пытаюсь сделать следующее, но выходной XML плохо сформирован:

 xml = Builder::XmlMarkup.new({:target => display })

xml.instruct!

xml.mail {  
  xml.documents {
    xml.document {
      xml.template {
        xml.source "gallery"
        xml.name "Postcard: Image fill front"
      }
      xml.sections {
        xml.section {
          xml.name "Text"
          xml.text "Hello, world"
        }

        xml.section {
           xml.name "Image"
           xml.attachment "1136946686-3425"
        }
      } #sections
    } #document         
  } #documents

  xml.addresses {
    xml.addressee {
      xml.name "Me"
      xml.address "Street"
      xml.city "San Francisco"
      xml.state "CA"
    }
  }  
}    
@xml_display = xml

Мне нужно, чтобы он выглядел примерно так:

<?xml version="1.0" encoding="UTF-8"?>
<mail>
  <documents>
    <document>
      <template>
        <source>gallery</source>
        <name>Postcard: Image fill front</name>
      </template>
      <sections>
         <section>
           <name>Text</name>
           <text>Hello, World!</text>
          </section>
       <section>
          <name>Image</name>
          <attachment>...attachment id...</attachment>
          </section>
       </sections>
    </document>
  </documents>
  <addressees>
    <addressee>
      <name>John Doe</name>
      <address>123 Main St</address>
      <city>Anytown</city>
      <state>AZ</state>
      <postal-code>10000</postal-code>
    </addressee>
  </addressees>
</mail>

Мой код выглядит примерно такэто в представлении (источник страницы):

<?xml version="1.0" encoding="UTF-8"?><mail/><documents/><document/><template/><source>gallery</source><name>Postcard:  Image fill front</name>

ПРИМЕЧАНИЕ: окончательный XML-файл должен быть размещен в URL, и я использую rest-client и поэтому хочу, чтобы все стало переменной экземпляракоторый передается как тело.

Переменная экземпляра просто @xml_display = xml, но она не работает ...: (*

1 Ответ

0 голосов
/ 29 мая 2010

Вы можете передать блок каждому из них, чтобы вложить элементы.

xml.mail do |mail|
  mail.documents do |documents|
    documents.document do |document|
      document.template do |template|
        template.source "gallery"
        template.name "Postcard:  Image fill front"
      end
    end
  end
end

Более подробная информация содержится на странице rubyforge .

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