2011-01-12 6 views
3

현재 이미지에 대한 URL이 포함 된 배열이 있습니다. 나는이 배열을 가지고 갤러리 내보기에 걸쳐 3 열입니다 썸네일 갤러리를 만들고 싶습니다내보기에서 축소판 갤러리를 만드는 레일

@images = [ "http://site/images/01.jpg", "http://site/images/02.jpg" ]

총 18 개 이미지

. html로 끌은 것

<table>
<tr>
<td><img src="http://site/images/01.jpg"></td>
<td><img src="http://site/images/02.jpg"></td>
<td><img src="http://site/images/03.jpg"></td>
</tr>
<tr>
<td><img src="http://site/images/04.jpg"></td>
<td><img src="http://site/images/05.jpg"></td>
<td><img src="http://site/images/06.jpg"></td>
</tr>
</table>

현재 구현 나에게 하나 개의 컬럼 테이블을 얻을 수

<table>
<tr>
<% @images.each do | image | %>
<td><%= image_tag(image)%></td><br>
<% end %>
</tr>
</table>

앞으로는 3 열 대신 6 열로 만들 수 있습니다. 나는 이것을 깨끗하고 유연한 방법으로 찾고있다.

나는 루비 문서보고 있었고, 난이 클래스 범위 (rng.step 방법) http://www.ruby-doc.org/core/classes/Range.html

이 범위 클래스 단계 방법이 문제를 해결할 수 있는지 확실하지만하지 않음을 보았다 그것이 제공하는 예는 흥미 롭습니다.

어떤 생각이든, 나는 여전히 배우고 있으며 아마도 이것을 생각하고있을 것입니다.

답변

7

사용 each_slice()

<table> 
    <% @images.each_slice(3) do |images| %> 
    <tr> 
     <% images.each do |image| %> 
     <td><%= image_tag(image) %></td> 
     <% end %> 
    </tr> 
    <% end %> 
</table> 
1

테스트되지 않음. each_with_index 및 계수 % 연산자를 사용해야합니다.

<% @images.each_with_index | image, index | %> 
    <% unless index % column_count == 0 %> 
     <td><%= image_tag(image)%></td> 
    <% else %> 
     <td><%= image_tag(image) %></td> 
     </tr> 
     <tr> 
    <% end %> 
<% end %> 
+0

내 인스턴스 변수'@의 images'가 배열이 아닌 해시입니다. 이 솔루션은 작동하지 않을 것이지만 모듈 '%'연산자에 대한 팁을 주셔서 감사합니다 – alenm

+0

물론 당신을 위해 작동합니다. 여기의 에러 만이 이상한'map'입니다. 첫 번째 라인은 다음과 같아야합니다 :'<% @ images.each_with_index | 이미지, 색인 | %>' – fl00r

+0

그에 따라 내 대답이 변경되었습니다. 나는 각각의 슬라브가 존재한다는 것을 몰랐다! –

관련 문제