2014-08-29 64 views
2

说我想打电话。每次上@users,在我的ERB我:Ruby on Rails的每个方法

<% @user.each do |user| %> 
<p><%= user.name %></p> 
<% end %> 

够简单。但每隔第5个用户后,我需要添加一个清除这个:

<div class="clearfix visible-xs"></div> 

什么是最好的方式去做到这一点?

+1

什么Rails的具体谈谈这个问题吗? PS。为了演示的目的,使用更好的CSS,不需要更改标记。 – sevenseacat 2014-08-29 07:53:40

+0

@sevenseacat用这样的方法发布一个答案,我会加注它。 – pjmorse 2014-08-29 12:55:57

回答

6

Enumerable#each_with_index应该确定:

<% @users.each_with_index do |user, index| %> 
    <p><%= user.name %></p> 
    <% if (index + 1) % 5 == 0 %> 
    <div class="clearfix visible-xs"></div> 
    <% end %> 
<% end %> 
+1

我很确定你的意思是:'index + 1%5',因为4将是第5个用户,不是吗? – Surya 2014-08-29 07:55:44

+0

谢谢。这就是我一直在寻找的! – user3591126 2014-08-29 07:55:52

+0

@Surya要小心优先。 '(index + 1)%5' – 2014-08-29 07:56:59

5

也许.each_slice将是另一种方式来提供这个功能:

<% @users.each_slice(5) do |users| %> 
    <% users.each do |user| %> 
     <p><%= user.name %></p> 
    <% end %> 
    <div class="clearfix visible-xs"></div> 
<% end %> 
+1

以前没见过'each_slice'。它看起来与'in_groups_of'相同,但没有使用'nil'填充组的烦人行为。 – 2014-08-29 08:38:23