8

我的成员索引页面只是一个成员列表,但我希望每 3 个成员都包含在一个包含的 div 中(这将像一行一样)。所以而不是:

<div class="member"></div>
<div class="member"></div>
<div class="member"></div>
<div class="member"></div>
<div class="member"></div>

我需要标记为:

<div class="row">
  <div class="member"></div>
  <div class="member"></div>
  <div class="member"></div>
</div>
<div class="row">
  <div class="member"></div>
  <div class="member"></div>
</div>

我确实有一个解决方案,但我对此并不满意。实际上,我以前在 ERB 中看到过更好的方法,但再也找不到了。

我当前的代码:

<div class="row">
  <% @members.each do |member| %>
    <div class="member"><%=member.name%></div>
    <%= cycle("", "", "</div><div class=\"row\">".html_safe) %>
  <% end %>
</div>
4

3 回答 3

16

这个怎么样:

<% @members.each_slice(3) do |slice| %>
  <div class="row">
    <% slice.each do |member| %>
      <div class="member">
      ...your markup here
      </div>
    <% end %>
  </div>
<% end %>
于 2012-07-20T15:07:20.713 回答
3

我找到了我正在寻找的方法。它与@HargrrimmTheBleak 发布的基本相同each_slice(),但名称更友好:

in_groups_of()

于 2012-08-20T15:07:15.913 回答
0

听起来像是使用模数的好机会

<div class="row">
<% for(i=1, i<=@members.size, i++ %>
    <% if i%4 == 0 %>
        </div>
        <div class="row">
    <% end %>
    <div class="member"><%=@members[i-1]%></div>
<% end %>
</div>
于 2012-07-20T15:08:19.520 回答