1

Is it possible convert the ERB code below to HAML?

ERB

<div class="users">    
  <div class="row">
    <% i = 0 %>
    <% @users.each do |user| %>
      <span><%= @user.name %></span>
      <% if i % 4 == 0 %>
        </div> <!-- Close div .row -->
        <div class="row"> <!-- Open new div .row -->
      <% end %>
      <% i += 1 %>
    <% end %>
  </div> <!-- Close div .row -->
</div> <!-- Close div .users -->

RESULT (HTML)

<div class="users">    
  <div class="row">
    <span>User Name 1</span>
    <span>User Name 2</span>
    <span>User Name 3</span>
    <span>User Name 4</span>
  </div> <!-- Close div .row -->
  <div class="row"> <!-- Open new div .row -->
    <span>User Name 5</span>
    <span>User Name 6</span>
    <span>User Name 7</span>
    <span>User Name 8</span>
  </div> <!-- Close div .row -->
  <div class="row"> <!-- Open new div .row -->
    <span>User Name 9</span>
    <span>User Name 10</span>
    <span>User Name 11</span>
    <span>User Name 12</span>
  </div> <!-- Close div .row -->
</div> <!-- Close div .users -->
Caio Tarifa
  • 5,973
  • 11
  • 46
  • 73
  • possible duplicate of [How can I conditionally wrap some HAML content in a tag?](http://stackoverflow.com/questions/7237308/how-can-i-conditionally-wrap-some-haml-content-in-a-tag) – matt Apr 29 '13 at 19:59
  • @matt, I edited the code, see now please. :) – Caio Tarifa Apr 29 '13 at 20:04
  • Well the _original_ question was a duplicate, it isn’t anymore. – matt Apr 29 '13 at 20:04

2 Answers2

2

I think you want this instead: EDIT:

.users
  -@users.each_slice(4) do |slice|
    .row
      -slice.each do |user|
        %span= user.name
kiddorails
  • 12,961
  • 2
  • 32
  • 41
2

You need to structure your data how you need to use it, using something like each_slice:

.users
  - @users.each_slice(4) do |group|
    .row
      - group.each do |user|
        %span= user.name
matt
  • 78,533
  • 8
  • 163
  • 197