假设我有一堆项目,我想遍历它们。我可能有一个 _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/