如何在<>内添加文字标签使用建设者?

时间:2013-09-02 01:22:09

标签: ruby-on-rails ruby xml builder

所以我正在尝试构建一个XML文档以供导出。但我需要在标题中添加额外的文本,但无法弄清楚如何。

def as_xml
  require 'rubygems'
  require 'builder'

  builder = Builder::XmlMarkup.new(:target=>STDOUT, :indent=>2)

  xml = builder.propertyList { |b|
    b.description(self.description);
    self.highlights.each do |h|
      b.highlight(h);
    end
  }
end

返回:

<propertyList>
  <description>"Description goes here"
  </description>
  <highlight>Highlight 1</highlight>
  <highlight>Highlight 2</highlight>
</propertyList>

有没有办法让它可以为高亮标记添加ID属性? 例如<highlight id=1>

还想知道是否有办法定义标签是否应该使用构建器自动关闭?

e.g:

<auction date=self.auctionDate />

1 个答案:

答案 0 :(得分:0)

您可以将属性作为辅助参数的哈希传递:

self.highlights.each_with_index do |h, i|
  b.highlight(h, id: i+1);
end

=> <highlight id='1'>Highlight 1</highlight>
=> <highlight id='2'>Highlight 2</highlight>

如果你只传递一个哈希,你可以得到一个自闭节点:

b.auction(date: 'someDate')

=> <auction date='someDate' />