Rails 3 - XML-generator
Ich habe ein Problem mit meinem index.xml.generator-Datei für Fotoalben; ich bin sicher, es ist etwas einfach, aber es macht mich verrückt nach nicht finden, eine Lösung in den generator::XmlMarkup docs. Hier ist meine aktuelle Ansicht:
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}"
}
}
}
Dies ist jedoch produzieren die folgenden:
<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...
Wie Sie sehen können, ich bin nicht in der Lage, diese Bilder zu bekommen verschachtelte innerhalb der </album>
tag. Irgendwelche Ideen, wie zum laufen bringen?
Vielen Dank im Voraus.
WRAP-UP (vielen Dank an iain für die Umsetzung, die mich auf den richtigen Weg):
Unterschätzen Sie nie Lesen des Quellcodes, in diesem Fall-generator::XmlBase#method_missing. Die Lösung wurde nicht übergeben Sie eine Zeichenfolge für den tag-Inhalt (g.name). Dies ist der code, den ich brauchte:
xml.instruct!
xml.gallery do
@albums.each do |g|
xml.album(:title => g.name) do
g.pictures.each do |p|
xml.img(:src => p.resource_file_name)
end
end
end
end
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nochmal schauen, weil der generator nicht erzeugen ungültige XML.
Nach stubbing, einige Dinge (Austausch der Galerie und Bilder mit einfachen arrays), die Sie im wesentlichen diesen code schrieb:
Die Ergebnisse in dieser XML:
Werden Sie wahrscheinlich wollen, um die img-tags innerhalb des album-tags, aber Ihr eigenes verschachteln falsch ist, dass. Einrücken von code wird Ihnen helfen, es herauszufinden, und mit
do
...end
Blöcke anstelle von geschweiften Klammern, wenn Sie mehrere linierte Blöcke, die hilft, die Struktur zu.