4

我有一个像这样组织的照片库:

.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

假设我有@imageswhere @images.count => 4

.container
  - for image in @images do
    %li
      %a{src: image.src}

此代码将破坏页面,因为在这种情况下.container有 4 %li

我怎样才能做到.container每 3 增加一次%li

4

3 回答 3

7

我猜方法Array#in_groups_of是你要找的。

- @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", "_", "_"]
于 2012-09-11T19:48:23.750 回答
1

我会尝试这样的事情:

- @images.each_slice(3) do |images|
  .container
    - images.each do |image|
      %li
        %a{src: image.src}
于 2012-09-11T19:50:11.060 回答
0

通过在@images http://ruby-doc.org/core-1.9.3/Enumerable.html#method-i-each_slice上使用 ruby​​ 的 each_slice 方法

- @images.each_slice(3) do |i| ....
于 2012-09-11T19:47:51.187 回答