Hamlでハッシュ引数を改行したらシンタックスエラーになった

Web技術メモ

はじめに

Hamlでフォームヘルパーのオプションを改行したときに、シンタックスエラーに出会いました。

小さなことですが、ハマりやすいのでメモします。

問題

Hamlでフォームヘルパーのオプションを改行したら、シンタックスエラーになった。

原因

  • Rubyは最後の引数がハッシュなら {} を省略できる
  • しかし、 { の直後で改行したせいで構文エラー扱いに

対策

  • {} を書くなら、{ の直後に少なくとも1つキーを書く
  • もっとシンプルに {} を省略して書く
# ❌NG
= f.check_box :published, { 
              id: 'published-toggle',
              data: { published_toggle_target: 'checkbox',
                      action: 'change->published-toggle#sync' } }

# ✅OK
= f.check_box :published,
              id: 'published-toggle',
              data: { published_toggle_target: 'checkbox',
                      action: 'change->published-toggle#sync' } 

まとめ

  • HamlのエラーはRubyのハッシュ構文が原因
  • {} の直後で改行せず、省略スタイルで書くのが安全で読みやすい

タイトルとURLをコピーしました