blog.waterlow.work

Ruby, Rails, js, etc...

hamlやるときに詰まったとこ

最近ちょっと触っているhamlについて触れました。
ただこいつ、Railsを書くとやたらはまります。(私だけ?)
しかも大体の場合が構文エラーなので、割としょうもない。
なのでそういった手間を少しでも省こうということでここにまとめます。

兄弟のタグ(?)は同じインデントに。

これはダメ

%table
  %tr
  %td りんご
    %td 甘酸っぱい
    %td おおむね赤
  %tr
    %td なつみかん
    %td かなり酸っぱいと思う
    %td たいてい黄色

これはOK

%table
  %tr
  %td りんご
  %td 甘酸っぱい
  %td おおむね赤
  %tr
    %td なつみかん
    %td かなり酸っぱいと思う
    %td たいてい黄色

なぜなのかはわかりませんが、親子関係は無視してもいいけれど横の足並みはそろえましょうと…

ハイフンでRubyの式を評価するときはインデントしない!

これはダメ

%h1 Hello#index
%p Find me in app/views/hello/index.html.haml
  - num = Random.new.rand(10)
  - if (num % 2 == 0)
    #{num}
  - else
    odd
%h1 Hello#index
%p Find me in app/views/hello/index.html.haml
- num = Random.new.rand(10)
- if (num % 2 == 0)
  #{num}
- else
  odd

これはOK

条件式のあとはインデントを下げて何かしら書く

これはダメ

%table
  %tr
    %td りんご
    - if false
    %td 甘酸っぱい
    %td おおむね赤
  %tr
    %td なつみかん
    %td かなり酸っぱいと思う
    %td たいてい黄色
%table
  %tr
    %td りんご
    - if false
      - p  'never do'
    %td 甘酸っぱい
    %td おおむね赤
  %tr
    %td なつみかん
    %td かなり酸っぱいと思う
    %td たいてい黄色

これはOK
普通に書いていたらやらないかもですが、はじめの探り探りの状態でハマってしましました。
以下の記事にも書いています。
ブロック引数を使う場合の haml のシンタックスエラー - u16suzuの blog
他にもhtmlに出力する用のコメントで引っかかったりすることもあるみたい…。
なれるまでは探り探りですがなれればviewページをスイスイ書けると信じて!!!