Rails在我的视图中创建缩略图库

时间:2011-01-12 16:14:33

标签: ruby-on-rails ruby views thumbnails gallery

我目前有一个包含图像URL的数组。

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

共18张图片

我想获取此数组并创建一个缩略图库,其中图库在我的视图中是3列。 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>

将来我可能希望它是6列而不是3列。 我正在寻找一种以干净灵活的方式做到这一点的方法。

我正在查看 Ruby文档,我看到了这一点 类范围(rng.step方法) http://www.ruby-doc.org/core/classes/Range.html

不确定此Range类步骤方法是否可以解决问题,但它提供的示例很有意思。

任何想法,我还在学习,也许我在想这个?

2 个答案:

答案 0 :(得分: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 :(得分: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 %>