在我的视图中创建一个缩略图库的Rails实现

3

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

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

总共18张图片

我想将这个数组转换成缩略图画廊,其中在我的视图中,画廊横跨3列。HTML输出如下:

我的当前实现只能得到一个列的表格。

<% @images.each do | image | %>
<%= image_tag(image)%>
<% end %>

将来我可能想要它变成6列而不是3列。 我正在寻找一种干净灵活的方法。

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

不确定这个范围类的step方法是否可以解决问题,但它提供的示例很有趣。

有什么想法吗? 我还在学习,也许我想得太多了?

2个回答

7

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

我的实例变量@images是一个数组而不是哈希。这个解决方案行不通,但感谢你提供了取模运算符%的提示。 - alenm
当然它会对你起作用。这里唯一的错误是奇怪的“map”。第一行应该像这样:<% @images.each_with_index | image, index | %> - fl00r
我已经相应地更改了我的答案。我不知道 each_slice 的存在! - Chuck Callebs
我也是 :) 不久之前我还在使用 each_with_index - fl00r
谢谢你的建议,each_slice() 正是我所需要的。 - alenm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接