[Haml] syntax error, unexpected keyword_ensure, expecting keyword_end というエラーの解決方法
Ruby on Rails で Haml を使っていて以下のようなエラーが発生しました。
■ エラーメッセージ
syntax error, unexpected keyword_ensure, expecting keyword_end
原因は、if 文の分岐の中をインデントを下げずに、下記のように記載していたせいでした。
%ul.nav を同じインデントで揃えたくて、こう書いたのですが、これがダメでした。
%div.container.nav-collapse
%ul.nav
%li #{ link_to "Article", "/articles" }
- if user_signed_in?
%ul.nav
%li #{ link_to "Signed in as #{ current_user.email }", "#" }
%ul.nav
%li #{ link_to "Sign out", destroy_user_session_path, :method => :delete }
- else
%ul.nav
%li #{ link_to "Sign up", new_user_registration_path }
%ul.nav
%li #{ link_to "Sign in", new_user_session_path }
正しくは、下記のように書きます。
%div.container.nav-collapse
%ul.nav
%li #{ link_to "Article", "/articles" }
- if user_signed_in?
%ul.nav
%li #{ link_to "Signed in as #{ current_user.email }", "#" }
%ul.nav
%li #{ link_to "Sign out", destroy_user_session_path, :method => :delete }
- else
%ul.nav
%li #{ link_to "Sign up", new_user_registration_path }
%ul.nav
%li #{ link_to "Sign in", new_user_session_path }
途中から、%ul.nav のインデントが1つ下がってて気持ち悪いですが、出力されるHTMLでは綺麗に同じインデントの階層で並んでいるので、安心しました。
以上です。