Частицы в построителе XML оказываются нетривиальными.
После некоторого первоначального поиска Google я нашел следующее, чтобы работать, хотя это не 100%
xml.foo do
xml.id(foo.id)
xml.created_at(foo.created_at)
xml.last_updated(foo.updated_at)
foo.bars.each do |bar|
xml << render(:partial => 'bar/_bar', :locals => { :bar => bar })
end
end
это сделает трюк, за исключением того, что вывод XML не имеет должным образом отступ. вывод выглядит примерно так:
<foo>
<id>1</id>
<created_at>sometime</created_at>
<last_updated>sometime</last_updated>
<bar>
...
</bar>
<bar>
...
</bar>
</foo>
Элемент <bar>
должен выравниваться под элементом <last_updated>
, он является дочерним элементом <foo>
следующим образом:
<foo>
<id>1</id>
<created_at>sometime</created_at>
<last_updated>sometime</last_updated>
<bar>
...
</bar>
<bar>
...
</bar>
</foo>
Отлично работает, если я скопирую содержимое из bar/_bar.xml.builder в шаблон, но тогда вещи просто не сухие.