假设我有一堆项目,我想遍历它们。我可能有一个 _item 部分来呈现这些。

我可以像这样渲染这些:

= render :partial=>'item', :collection => @items, :as => :item

对于这个例子,假设部分是非常简单的,就像这样(在haml中):
.item= item.name

但是,我希望将这些项目按行分组,因此标记最终如下所示:
<div class="item_row">
  <div class="item">Item Name</div>
  <div class="item">Item Name</div>
  <div class="item">Item Name</div>
  <div class="item">Item Name</div>
  <div class="item">Item Name</div>
</div>
<div class="item_row">
  <div class="item">Item Name</div>
  <div class="item">Item Name</div>
  <div class="item">Item Name</div>
  <div class="item">Item Name</div>
  <div class="item">Item Name</div>
</div>
<div class="item_row">
  <div class="item">Item Name</div>
  <div class="item">Item Name</div>
  <div class="item">Item Name</div>
  <div class="item">Item Name</div>
  <div class="item">Item Name</div>
</div>

我并不总是提前知道会有多少项目/我需要多少行。

你怎么能创建一个部分,或包装一个部分,所以它会像这样按组呈现?

最佳答案

您可以使用 Enumerable 的 each_slice 一次将这 5 个分组并连续显示它们:

<% @items.each_slice(5) do |items_for_row| %>
  <div class="item_row">
    <%= render :partial => "item", :collection => items_for_row, :as => :item %>
  </div>
<% end %>

关于ruby-on-rails - Rails : Make a repeating partial in groups,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8039702/

10-13 02:13