我目前有一个包含图像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类步骤方法是否可以解决问题,但它提供的示例很有意思。
任何想法,我还在学习,也许我在想这个?
答案 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 %>