[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では綺麗に同じインデントの階層で並んでいるので、安心しました。
以上です。