Rails/Haml:每n次迭代添加一个父类

Ale*_*lex 4 html ruby algorithm haml ruby-on-rails

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

.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}
Run Code Online (Sandbox Code Playgroud)

每个容器最多应为3个%li.

假设我在@images哪里@images.count => 4.

.container
  - for image in @images do
    %li
      %a{src: image.src}
Run Code Online (Sandbox Code Playgroud)

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

我怎么能这样做.container每隔3加一次%li

hs-*_*hs- 7

我想方法Array#in_groups_of就是你要找的.

- @images.in_groups_of(3, false).each do |images|
  .container
    - images.each do |image|
      %li
        %a{src: image.src}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,使用此方法您还可以定义缺失图像的替换

%w(1 2 3 4).in_groups_of(3, '_') {|group| p group}
# => ["1", "2", "3"]
# => ["4", "_", "_"]
Run Code Online (Sandbox Code Playgroud)