And*_*rew 3 ruby-on-rails partial ruby-on-rails-3.1
假设我有一堆项目,我想迭代它们.我可能会_item偏爱渲染这些.
我可以像这样呈现这些:
= render :partial=>'item', :collection => @items, :as => :item
Run Code Online (Sandbox Code Playgroud)
对于这个例子,假设部分是非常简单的,就像这样(在haml中):
.item= item.name
Run Code Online (Sandbox Code Playgroud)
但是,我希望这些项目按行分组,因此标记最终会像这样:
<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>
Run Code Online (Sandbox Code Playgroud)
我并不总是提前知道会有多少项目/我需要多少行.
你怎么能创建一个局部的,或者包装一个局部的,所以它会像这样在组中渲染?
您可以使用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 %>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1032 次 |
| 最近记录: |