每 3 项新行 [英] New row every 3 items

查看:28
本文介绍了每 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屋!

查看全文
相关文章
其他开发最新文章
热门教程
热门工具
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆