我有一个像这样组织的照片库:
.container
%li
%a{src: image.src}
%li
%a{src: image.src}
%li
%a{src: image.src}
.container
%li
%a{src: image.src}
%li
%a{src: image.src}
%li
%a{src: image.src}
每个容器最多应有3个%li
。
假设我有@images
@images.count => 4
。
.container
- for image in @images do
%li
%a{src: image.src}
此代码会破坏页面,因为在这种情况下.container
有4个%li
。
我怎样才能每3 .container
添加%li
?
答案 0 :(得分:7)
我想方法Array#in_groups_of就是你要找的。 p>
- @images.in_groups_of(3, false).each do |images|
.container
- images.each do |image|
%li
%a{src: image.src}
顺便说一下,使用这种方法你也可以定义缺失图像的替换
%w(1 2 3 4).in_groups_of(3, '_') {|group| p group}
# => ["1", "2", "3"]
# => ["4", "_", "_"]
答案 1 :(得分:1)
我会尝试这样的事情:
- @images.each_slice(3) do |images|
.container
- images.each do |image|
%li
%a{src: image.src}
答案 2 :(得分:0)
在@images上使用ruby的each_slice方法 http://ruby-doc.org/core-1.9.3/Enumerable.html#method-i-each_slice
- @images.each_slice(3) do |i| ....