2012-07-20 1 views
8

내 회원 인덱스 페이지는 회원 목록 일 뿐이며, 3 인 회원이 포함 된 div (줄처럼 작동)에 싸여 있기를 바랍니다. 그래서 대신 : 내가 필요ERB (Rails)의 상위 div에있는 모든 N 요소를 래핑하는 방법은 무엇입니까?

<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> 

답변

15

이 방법에 대해 :

<% @members.each_slice(3) do |slice| %> 
    <div class="row"> 
    <% slice.each do |member| %> 
     <div class="member"> 
     ...your markup here 
     </div> 
    <% end %> 
    </div> 
<% end %> 
+2

또한 (3 false)를 in_groups_of와 (3) each_slice를 대체 할 수 –

+0

감사합니다, 선생님! 이게 내가 원하는거야. – tybro0103

+0

'in_groups_of'는 저에게 효과적이지 않았습니다. 이 대답'each_slice'는 내 시간을 저장했습니다. –

0

내가 찾고 있었던 방법을 발견 계수를

<div class="row"> 
<% for(i=1, i<[email protected], i++ %> 
    <% if i%4 == 0 %> 
     </div> 
     <div class="row"> 
    <% end %> 
    <div class="member"><%[email protected][i-1]%></div> 
<% end %> 
</div> 
+0

이것은 cycle() 도우미보다 훨씬 복잡합니다. 나는 더 간단한 것을 찾고있다. – tybro0103

2

을 사용할 수있는 좋은 기회 같은데 . 그것은 @HargrimmTheBleak에 의해 게시 each_slice() 기본적으로 동일하지만 좀 더 친숙한 이름이 있습니다

in_groups_of()

관련 문제