Ruby on rails Rails3-XMLBuilder

Ruby on rails Rails3-XMLBuilder,ruby-on-rails,xml,builder,Ruby On Rails,Xml,Builder,我的相册index.xml.builder文件有问题;我相信这很简单,但在Builder::XmlMarkup文档中找不到解决方案后,这让我抓狂。以下是我目前的看法: xml.instruct! xml.gallery { @albums.each { |g| xml.album(g.name, {:title => g.name, :description => g.description, :

我的相册index.xml.builder文件有问题;我相信这很简单,但在Builder::XmlMarkup文档中找不到解决方案后,这让我抓狂。以下是我目前的看法:

xml.instruct!
xml.gallery {
@albums.each { |g|
  xml.album(g.name, {:title => g.name, 
                    :description => g.description, 
                    :lgpath => "[PATH]",
                    :tnpath => "[PATH]",
                    :fspath => "[PATH]"})
     g.pictures.each { |p|
      xml.img nil, :src => "#{p.resource_file_name}"
    }
  }
}
然而,这产生了以下结果:

<gallery>
  <album title="..." description="..." lgpath="..." tnpath="..." fspath="..."></album>
    <img src="17112.jpg"/>
    <img src="17113.jpg"/>
    <img src="17114.jpg"/>
    <img src="17115.jpg"/>
  <album...

再看一遍,因为生成器不会生成无效的XML

在删除一些内容(用简单数组替换图库和图片)后,您基本上编写了以下代码:

xml.instruct!
xml.gallery do
  [1, 2, 3].each do |g|
    xml.album g.to_s, :title => g.to_s, :fspath => "[PATH]"
    [4, 5, 6].each do |p|
      xml.img nil, :src => "#{p}.gif"
    end
  end
end
这将导致以下XML:

<?xml version="1.0" encoding="UTF-8"?> 
<gallery> 
  <album title="1" fspath="[PATH]">1</album> 
  <img src="4.gif"></img> 
  <img src="5.gif"></img> 
  <img src="6.gif"></img> 
  <album title="2" fspath="[PATH]">2</album> 
  <img src="4.gif"></img> 
  <img src="5.gif"></img> 
  <img src="6.gif"></img> 
  <album title="3" fspath="[PATH]">3</album> 
  <img src="4.gif"></img> 
  <img src="5.gif"></img> 
  <img src="6.gif"></img> 
</gallery> 

1.
2.
3.

您可能希望在相册标签中包含img标签,但您自己的嵌套方式是错误的。缩进代码将有助于您理解它,使用
do
end
块而不是花括号,无论何时使用多行块也有助于结构。

感谢您的帮助。你是对的,我错过了相册标签,事实上,我希望图像嵌套。我无法发现我的错误,因为我正在画廊街区范围内调用g.pictures。我确信我的错误是愚蠢得让人发麻的,所以我会继续努力…给街区内的g.pictures打电话,准备好专辑,你应该准备好了。不过,您可能希望将相册的名称设置为标记或属性
<?xml version="1.0" encoding="UTF-8"?> 
<gallery> 
  <album title="1" fspath="[PATH]">1</album> 
  <img src="4.gif"></img> 
  <img src="5.gif"></img> 
  <img src="6.gif"></img> 
  <album title="2" fspath="[PATH]">2</album> 
  <img src="4.gif"></img> 
  <img src="5.gif"></img> 
  <img src="6.gif"></img> 
  <album title="3" fspath="[PATH]">3</album> 
  <img src="4.gif"></img> 
  <img src="5.gif"></img> 
  <img src="6.gif"></img> 
</gallery>