LoginSignup
7
9

More than 5 years have passed since last update.

Rails + HAML: 特定の間隔でネストしたタグ構造を作る

Last updated at Posted at 2013-08-20

実現したいこと

Rails + HAMLでこんな構造のタグを作りたい (特定の間隔でネストさせる)

<ul>
  <li>山田</li>
  <li>田中</li>
</ul>

<ul>
  <li>鈴木</li>
  <li>佐藤</li>
</ul>

<ul>
  <li>高橋</li>
  <li>山本</li>
</ul>

こうやってもダメ

直感的にこんなコードを書いてみましたが・・・・

- @users.each_with_index do |user, i|
  - if i % 2 == 0
    %ul
  %li= user.name

あれっ?ネストしなかった。。。orz

<ul></ul>
<li>山田</li>
<li>田中</li>

<ul></ul>
<li>鈴木</li>
<li>佐藤</li>

<ul></ul>
<li>高橋</li>
<li>山本</li>

each_sliceメソッドを使えばOK

こんなときはEnumerableモジュールのeach_sliceメソッドを使いましょう。

- @users.each_slice(2) do |users|
  %ul
    - users.each do |user|
      %li= user.name

こうすれば特定の間隔でネストするタグ構造を作れます。
めでたしめでたし。

<ul>
  <li>山田</li>
  <li>田中</li>
</ul>

<ul>
  <li>鈴木</li>
  <li>佐藤</li>
</ul>

<ul>
  <li>高橋</li>
  <li>山本</li>
</ul>
7
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
9