Rails:循环处理部分,为第一项添加额外的 class

Rails: process partials with loop, add additional class for the first item

我正在尝试实现某种图片库。我决定在内部使用带有图像片段的部分。对于每个图像类别,partail 每页添加 5 次。其实很简单:

# main page
.container
  .row
    .col-lg-12
      %h1.page-header Image Gallery
    - 5.times do
      = render partial: 'image'

# partial
.col-xs-6.col-md-2
  = link_to image_tag('http://placehold.it/128x128', class: 'img-responsive'), '#', class: 'thumbnail'

但问题是连续的第一个 div 应该有一个额外的 class .col-md-offset-1(我每页有奇数个图像)。我怀疑这可以在循环内完成。有谁知道如何解决这个问题?

你可以传递一个参数。

- 5.times do |x|
  = render partial: 'image', locals: {counter: x} 

您的部分将有一个局部变量 counter,您可以测试它是否是第一个部分(等于 0)。

这是对@SteveTurczyn 回答的扩展!

# main page
.container
  .row
    .col-lg-12
      %h1.page-header Image Gallery
    - 5.times do |index|
      = render partial: 'image', locals: {index: index}

# partial
- css_class = (index == 0) ? 'col-xs-6 col-md-2 col-md-offset-1' : 'col-xs-6 col-md-2'
%div{class: css_class}
  = link_to image_tag('http://placehold.it/128x128', class: 'img-responsive'), '#', class: 'thumbnail'}