如何在Ruby中更简洁地表达这段代码

dee*_*dee 2 ruby loops ruby-on-rails

在每个循环中,我想输出一个HTML元素,如果它是循环的开头,或者索引是五的倍数.

- images.each do |image, index|
  - if index == 1 || index == 5 || index == 10 || index == 15 # this is not scalable!
    .row-fluid
  .span2
    div.image-wrapper
      = image_tag image.url
Run Code Online (Sandbox Code Playgroud)

有没有更好的方式在Ruby中表达这一点?

我想在span2div中输出最多5 个row-fluiddiv.

Ser*_*sev 10

满足模数运算符

if index % 5 == 0
Run Code Online (Sandbox Code Playgroud)

基本上,我想确保在行 - 流体div中最多只输出5个span2 div.

嗯,这完全是另一个故事

- images.each_slice(5) do |slice|
  .row-fluid
  - slice.each do |image|
    .span2
      div.image-wrapper
        = image_tag image.url
Run Code Online (Sandbox Code Playgroud)

关于Enumerable#each_slice的文档.

  • 你也可以使用`1.modulo 5` (2认同)