如何在 Ruby 中的另一个 xml.erb 内渲染?

How to render inside another xml.erb in Ruby?

我是Ruby的新蜜蜂。 :) 对于成熟的开发人员来说,这个问题可能很容易,但我需要帮助..

假设我每次都想生成以下 xml.erb。

<books>
 <item value = <% = quantity %>/>
..
</books>

在上面的例子中,如果我想每次都生成不同的项目,那么我想做这样的事情:

<books>
 <%= Item.items.each do |item|%>
<%= write_xml_part_for_items(item)%>

<% end %>
..
</books>

在 write_xml_part_for_items(item) 中,我想渲染另一个 xml.erb 文件。

通过这种方式可以吗?如果是的话,有人可以一步一步地告诉我如何做到这一点,以及如何在语法上正确吗?

谢谢

您可以使用局部视图。在您的视图文件夹中创建一个名为 _book_item_or_whatever.xml.erb 的文件,并在您的书籍视图中引用它:

<books>
    <% Item.items.each do |item| %>
        <%= render partial: "book_item_or_whatever", locals: { item: item } %>
    <% end %>
    ...
</book>

请注意,部分文件以下划线开头,而不是渲染选项中的引用。

http://api.rubyonrails.org/classes/ActionView/PartialRenderer.html