每 3 项新行
[英] New row every 3 items
本文介绍了每 3 项新行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想一次渲染我的项目列表 3,以便它们以三行的形式输出.我目前正在使用
<div class="三列"><% @items.each do |f|%><div class="item"><%=f.含量%>
<%结束%>
在一个行"中输出所有规则 -
<div class="三列"><div class="item">这是内容
<div class="item">这是内容
<div class="item">这是内容
<div class="item">这是内容
<div class="item">这是内容
我希望能够为每三个返回的项目输出一行,所以 -
<div class="三列"><div class="item">这是内容
<div class="item">这是内容
<div class="item">这是内容
<div class="row"><div class="三列"><div class="item">这是内容
<div class="item">这是内容
<div class="item">这是内容
谢谢
解决方案
除了前面提到的 each_slice
,Rails 还有一个 in_groups_of
方法,您可以像这样使用:
<% @items.in_groups_of(3, false).each do |group|%><div class="row"><div class="三列"><% group.each do |item|%><div class="item"><%= item.content %><%结束%>
<%结束%>
与 each_slice
几乎相同,只是需要输出空白 div 的场景变得更加清晰:
<% @items.in_groups_of(3).each do |group|%><div class="row"><div class="三列"><% group.each do |item|%><div class="item"><%= item.content if item %><%结束%>
<%结束%>
in_groups_of
默认情况下用 nil
填充最后一组中缺失的项目,因此它将进行最后几次迭代和 if item
检查将通过在 nil
上调用 content
来确保它不会爆炸.
in_groups
是另一种用于视图格式化的有趣工具.
I want to render my list of items 3 at a time so that they output in rows of three. I am current using
<div class="row">
<div class="three columns">
<% @items.each do |f|%>
<div class="item">
<%= f.content %>
</div>
<% end %>
</div>
</div>
Which outputs all the rules in one 'row' -
<div class="row">
<div class="three columns">
<div class="item">
This is the content
</div>
<div class="item">
This is the content
</div>
<div class="item">
This is the content
</div>
<div class="item">
This is the content
</div>
<div class="item">
This is the content
</div>
</div>
</div>
what I want to be able to do is output a row for every three items returned, so -
<div class="row">
<div class="three columns">
<div class="item">
This is the content
</div>
<div class="item">
This is the content
</div>
<div class="item">
This is the content
</div>
</div>
</div>
<div class="row">
<div class="three columns">
<div class="item">
This is the content
</div>
<div class="item">
This is the content
</div>
<div class="item">
This is the content
</div>
</div>
</div>
Thanks
解决方案
Besides the aforementioned each_slice
, Rails also has an in_groups_of
method that you can use like so:
<% @items.in_groups_of(3, false).each do |group| %>
<div class="row">
<div class="three columns">
<% group.each do |item| %>
<div class="item">
<%= item.content %>
</div>
<% end %>
</div>
</div>
<% end %>
Pretty much the same as each_slice
, except the scenario of needing to output blank divs becomes much cleaner like so:
<% @items.in_groups_of(3).each do |group| %>
<div class="row">
<div class="three columns">
<% group.each do |item| %>
<div class="item">
<%= item.content if item %>
</div>
<% end %>
</div>
</div>
<% end %>
in_groups_of
pads missing items in the last group with nil
by default, so it will make the last few iterations and the if item
check will make sure it doesn't blow up by calling content
on nil
.
in_groups
is another fun one to use for view formatting.
这篇关于每 3 项新行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文