我的循环为每次迭代创建一个新行。我希望它每行循环3次。
我没有运气3.times {...}或.step(3)。
我的循环:
<% @image_paths.each do |image| %>
<div class="row">
<ul class="thumbnails">
<li class="span3">
<h3><%= File.basename(image) %></h3>
<% image_path = ["", File.dirname(image).split("public"),"/", File.basename(image)].join('') %>
<%= link_to image_tag(image_path), image_path[/\/.*/]%>
</li>
</ul>
</div>
<% end %>
答案 0 :(得分:2)
您正在寻找
http://ruby-doc.org/core-1.9.3/Enumerable.html#method-i-each_slice
<% @image_paths.each_slice(3) do |slice| %>
<div class="row">
<ul class="thumbnails">
<% slice.each do |image| %>
<li class="span3">
<h3><%= File.basename(image) %></h3>
<% image_path = ["", File.dirname(image).split("public"),"/", File.basename(image)].join('') %>
<%= link_to image_tag(image_path), image_path[/\/.*/]%>
</li>
<% end %>
</ul>
</div>
<% end %>
因此,slice变量将是3(或2或1)个图像的数组,或者是初始集合中的任何图像。希望有所帮助!
答案 1 :(得分:0)
使用Rails,您可以使用in_groups_of
方法获取一组3个image_path&#39; s,
<% @image_paths.in_groups_of(3, false).each do |images| %>
<div class="row">
<% images.each do |image| %>
<ul class="thumbnails">
<li class="span3">
<h3><%= File.basename(image) %></h3>
<% image_path = ["", File.dirname(image).split("public"),"/", File.basename(image)].join('') %>
<%= link_to image_tag(image_path), image_path[/\/.*/]%>
</li>
</ul>
<% end %>
</div>
<% end %>
有关详细信息,请参阅Official Documentation of Rails。