web-dev-qa-db-ja.com

Hamlでif-conditionを書く方法は?

RubyアプリケーションのRailsのHamlでifおよびif-elseステートメントを記述する方法

69

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
114
bilash.saha

Hamlでは、Rubyコードに2つの演算子が使用されます。

  • =は、Rubyで評価され、ドキュメントに挿入されるコードに使用されます。

例:

= form_for @user  
  • -は、Rubyで評価され、ドキュメントに挿入されないコードに使用されます。

例:

- if @user.signed_in?  
  = "Hi"  
- else  
  = "Please sign in!"
16
Pratik Ganvir

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 %>
8
Michelle Tilley

タグ内に条件を入れたい場合

%section{:class => "#{'new-class' if controller.action_name == 'index'}"}
2
Anton Sergeyev