我的成员索引页面只是一个成员列表,但我希望每个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>
答案 0 :(得分:16)
这个怎么样:
<% @members.each_slice(3) do |slice| %>
<div class="row">
<% slice.each do |member| %>
<div class="member">
...your markup here
</div>
<% end %>
</div>
<% end %>
答案 1 :(得分:3)
我找到了我正在寻找的方法。它与@HargrimmTheBleak发布的each_slice()
基本相同,但有一个更友好的名字:
答案 2 :(得分: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>