はじめに
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のハッシュ構文が原因
- {} の直後で改行せず、省略スタイルで書くのが安全で読みやすい