【问题标题】:How to wrap every N elements in parent div in ERB (Rails)?如何在 ERB(Rails)中包装父 div 中的每 N 个元素?
【发布时间】:2012-07-20 14:53:55
【问题描述】:

我的成员索引页面只是一个成员列表,但我希望每 3 个成员都包含在一个包含的 div 中(这将像一行一样)。所以而不是:

<div class="member"></div>
<div class="member"></div>
<div class="member"></div>
<div class="member"></div>
<div class="member"></div>

我需要的标记是:

<div class="row">
  <div class="member"></div>
  <div class="member"></div>
  <div class="member"></div>
</div>
<div class="row">
  <div class="member"></div>
  <div class="member"></div>
</div>

我确实有一个解决方案,但我对此并不满意。实际上我之前在 ERB 中看到过更好的方法,但找不到了。

我当前的代码:

<div class="row">
  <% @members.each do |member| %>
    <div class="member"><%=member.name%></div>
    <%= cycle("", "", "</div><div class=\"row\">".html_safe) %>
  <% end %>
</div>

【问题讨论】:

    标签: html ruby-on-rails ruby erb


    【解决方案1】:

    这个怎么样:

    <% @members.each_slice(3) do |slice| %>
      <div class="row">
        <% slice.each do |member| %>
          <div class="member">
          ...your markup here
          </div>
        <% end %>
      </div>
    <% end %>
    

    【讨论】:

    • 你也可以将 each_slice(3) 替换为 in_groups_of(3,false)
    • in_groups_of 对我不起作用。这个答案each_slice 节省了我的时间。
    【解决方案2】:

    我找到了我正在寻找的方法。它与@HargrimmTheBleak 发布的each_slice() 基本相同,但名称更友好:

    in_groups_of()

    【讨论】:

      【解决方案3】:

      听起来是使用模数的好机会

      <div class="row">
      <% for(i=1, i<=@members.size, i++ %>
          <% if i%4 == 0 %>
              </div>
              <div class="row">
          <% end %>
          <div class="member"><%=@members[i-1]%></div>
      <% end %>
      </div>
      

      【讨论】:

      • 这比 cycle() 帮助器还要复杂。我正在寻找更简单的东西。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 2017-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多