Ruby on rails 3 Rails 3在循环中分配一个容器Div

Ruby on rails 3 Rails 3在循环中分配一个容器Div,ruby-on-rails-3,loops,html,Ruby On Rails 3,Loops,Html,假设我在一个产品数组中循环,我将如何在该循环中分配容器div。例如,我希望输出如下: <div class="page"> <p>product1</p> <p>product2</p> <p>product3</p> <p>product4</p> </div> <div class="page"> <p>product5</

假设我在一个产品数组中循环,我将如何在该循环中分配容器div。例如,我希望输出如下:

<div class="page">
  <p>product1</p>
  <p>product2</p>
  <p>product3</p>
  <p>product4</p>
</div>
<div class="page">
  <p>product5</p>
  <p>product6</p>
  <p>product7</p>
  <p>product8</p>
</div>
我试过这样的方法:

<% @products.each_with_index do |product, index| %>
  <% if index%4 == 0 %>
    <div class="page">
  <%end%>
  <p><%= product.data %>
  <% if index%4 == 0 %>
    </div>>
  <%end%>
<% end %>
但正如预期的那样,它只会用容器包围每四种产品。我想我需要两个循环才能工作,但是我怎么能不复制数据呢

编辑

当使用带有索引的每个_的替代项时,是否有任何方法可以使用此方法跟踪索引?还有一些基于索引值设置的条件属性

例如:

style=<%= index == 0 ? "top:5px;" : ""%>
编辑:忘记我的结束标签了

<% @products.each_slice(4) do |slice| %>
  <div class="page">
    <% slice.each do |product| %>
      <p><%= product.data %></p>
    <% end %>
  </div>
<% end %>

编辑:忘记我的结束标签了

将数组拆分为大小相等的组的Rails方法是

<% @products.each_slice(4) do |slice| %>
  <div class="page">
    <% slice.each do |product| %>
      <p><%= product.data %></p>
    <% end %>
  </div>
<% end %>
您可以使用@products.indexproduct获取绝对产品索引,也可以使用@products.indexproduct获取组索引

<% @products.in_groups_of(4, false).each_with_index do |group, group_index| %>

将数组拆分为大小相等的组的Rails方法是

您可以使用@products.indexproduct获取绝对产品索引,也可以使用@products.indexproduct获取组索引

<% @products.in_groups_of(4, false).each_with_index do |group, group_index| %>
另一种方法:

<% while group = @products.take 4 %>
  <div class="page">

  <% group.each do |product| %>
    <p><%= product.data %></p>
  <% end %>

  </div>
<% end %>
另一种方法:

<% while group = @products.take 4 %>
  <div class="page">

  <% group.each do |product| %>
    <p><%= product.data %></p>
  <% end %>

  </div>
<% end %>

啊哈,我知道有办法做到这一点。顺便说一句,我一定一直在想JavaSyntaxaha,我知道有一种方法可以做到这一点。对4==3部分的理解很好顺便说一句,我一定一直在想Java语法,看看编辑细节。此外,我同意HAML的外观更好,但遗憾的是,我95%的应用程序是使用ERB编写的,除非我将所有现有视图更改为HAML,否则启动并开始使用其他视图可能不是一个好主意。添加了获取绝对索引的注释。太好了,我不知道绝对索引。但是,我不认为我们可以让它为页面容器工作?例如,我只想将样式应用于第一页容器。这可以通过组索引工作,请参见答案。第一组为0,第二组为1,依此类推。现在效果很好,这个答案比我用orzechowskid的答案得到的答案要干净一点,所以我将接受这个答案。请参阅编辑详细信息。此外,我同意HAML的外观更好,但遗憾的是,我95%的应用程序是使用ERB编写的,除非我将所有现有视图更改为HAML,否则启动并开始使用其他视图可能不是一个好主意。添加了获取绝对索引的注释。太好了,我不知道绝对索引。但是,我不认为我们可以让它为页面容器工作?例如,我只想将样式应用于第一页容器。这可以通过组索引工作,请参见答案。第一组为0,第二组为1,依此类推。现在效果很好,这个答案比我用orzechowskid的答案得到的答案要干净一点,所以我会接受这个答案。这也很好,这个和其他组之间有什么显著的区别吗?另外,我希望我能给你戴着Hei的脸的加分:in_groups of是Rails特有的,但是每个片都是内置的Ruby方法,用于枚举。这同样有效,这和in_groups of之间有什么显著的区别吗?我也希望我能给你戴着Hei的脸的加分:in_groups_of是Rails特有的,但是每个_片都是一个内置的Ruby方法,用于枚举