【问题标题】:Rails/Haml: adding a parentclass every n iterationRails/Haml:每 n 次迭代添加一个父类
【发布时间】:2012-09-11 19:43:14
【问题描述】:

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

.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 个 %li 添加一个 .container

【问题讨论】:

    标签: html ruby-on-rails ruby algorithm haml


    【解决方案1】:

    我猜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", "_", "_"]
    

    【讨论】:

      【解决方案2】:

      我会尝试这样的:

      - @images.each_slice(3) do |images|
        .container
          - images.each do |image|
            %li
              %a{src: image.src}
      

      【讨论】:

        【解决方案3】:

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

        - @images.each_slice(3) do |i| ....
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-11-18
          • 2010-12-29
          • 1970-01-01
          • 1970-01-01
          • 2020-02-28
          • 2014-08-10
          • 2018-02-16
          相关资源
          最近更新 更多