RubyアプリケーションのRailsのHamlでif
およびif
-else
ステートメントを記述する方法
HAMLはインデントに基づいており、パーサーは扱いにくい場合があります。Hamlで「-end」を使用する必要はありません。代わりにインデントを使用します。Hamlでは、ブロックはRuby評価コマンドの後にインデントが増加するたびに開始されます。インデントが減少すると終了します。
- if condition
= something
- else
= something_else
実用的な例
- if current_user
= link_to 'Logout', logout_path
- else
= link_to 'Login', login_path
編集: if条件のみを使用する場合
- if current_user
= link_to 'Logout', logout_path
Hamlでは、Rubyコードに2つの演算子が使用されます。
=
は、Rubyで評価され、ドキュメントに挿入されるコードに使用されます。例:
= form_for @user
-
は、Rubyで評価され、ドキュメントに挿入されないコードに使用されます。例:
- if @user.signed_in?
= "Hi"
- else
= "Please sign in!"
Hamlでは、-
(ダッシュ)を使用して、行がRubyコードであることを示します。さらに、インデントレベルはブロックレベルを示します。if/ elseステートメントの2つを組み合わせます。
- if signed_in?
%li= link_to "Sign out", sign_out_path
- else
%li= link_to "Sign in", sign_in_path
eRBの次のコードと同じです。
<% if signed_in? %>
<li><%= link_to "Sign out", sign_out_path %></li>
<% else %>
<li><%= link_to "Sign in", sign_in_path %></li>
<% end %>
タグ内に条件を入れたい場合
%section{:class => "#{'new-class' if controller.action_name == 'index'}"}