Wie schreibe ich if
und if
- else
Anweisungen in Haml für eine Ruby on Rails-Anwendung?
Wie schreibe ich if
und if
- else
Anweisungen in Haml für eine Ruby on Rails-Anwendung?
Antworten:
HAML basiert auf Einrückungen, und der Parser kann schwierig sein. Sie müssen "- end" in Haml nicht verwenden. Verwenden Sie stattdessen Einrückung. In Haml beginnt ein Block, wenn die Einrückung nach einem Ruby-Auswertungsbefehl erhöht wird. Es endet, wenn die Einrückung abnimmt. Beispiel, wenn sonst wie folgt blockieren.
- if condition
= something
- else
= something_else
Ein praktisches Beispiel
- if current_user
= link_to 'Logout', logout_path
- else
= link_to 'Login', login_path
Bearbeiten: Wenn Sie nur if-Bedingung verwenden möchten, dann
- if current_user
= link_to 'Logout', logout_path
or
ich der Bedingung einen Operator hinzu?
In haml werden zwei Operatoren für Ruby-Code verwendet.
=
wird für Ruby-Code verwendet, der ausgewertet und in das Dokument eingefügt wird. Beispiel:
= form_for @user
-
wird für Ruby-Code verwendet, der ausgewertet wird und NICHT in ein Dokument eingefügt wird. Beispiel:
- if @user.signed_in?
= "Hi"
- else
= "Please sign in!"
=
wenn Sie eine einfache Zeichenfolge wie Hi
oder ausgeben möchten Please sign in
. =
ist nur für die Bewertung von Ruby erforderlich, wie= "Hi, #{@user.name}"
Verwenden Sie in haml den -
(Bindestrich), um anzugeben, dass eine Zeile Ruby-Code ist. Darüber hinaus gibt die Einrückungsstufe die Blockstufe an. Kombinieren Sie die beiden für if / else-Anweisungen.
- if signed_in?
%li= link_to "Sign out", sign_out_path
- else
%li= link_to "Sign in", sign_in_path
entspricht dem folgenden Code in ERB:
<% if signed_in? %>
<li><%= link_to "Sign out", sign_out_path %></li>
<% else %>
<li><%= link_to "Sign in", sign_in_path %></li>
<% end %>
Wenn Sie eine Bedingung in Ihr Tag einfügen möchten
%section{:class => "#{'new-class' if controller.action_name == 'index'}"}
AKTUALISIEREN
Hier ist eine andere Variante
%nav(class="navbar"){class: content_for?(:navbar_class) ? yield(:navbar_class) : nil}
Hier sind zwei Links:
Der erste ist ein Konverter - Sie können HTML- oder Erb-Snippets eingeben und erhalten Haml!