Sie können dies außerhalb von %code% :
tun %Vor%Ich möchte die Klasse "versteckt" zu einem Rails Link-Tag hinzufügen, abhängig davon, ob "accepted == true".
Wenn ich kein Rails link_to
verwenden würde, könnte ich <a href="#" class="foo bar <%= "hidden" if accepted == true %>" >
machen. Wie kann ich dies innerhalb von link_to
erreichen?
Sie können auch einen Helfer verwenden, um den Link aufzubauen:
%Vor%Wenn Sie eine Interpolation mit # {} verwenden, wird alles, was Sie zwischen es einfügen, als einfacher alter Ruby-Code ausgeführt. In diesem Beispiel könnten Sie eine bedingte Klasse in der Zeichenfolge wie folgt hinzufügen:
%Vor% Bitte beachten Sie, dass Sie den Klassennamen "versteckt" in Anführungszeichen setzen sollten.
Beachten Sie auch, dass Sie, wenn eine Variable einen booleschen Wert (wahr oder falsch) darstellt, nicht explizit link_to
sagen müssen. Sie können einfach %code% sagen.
Ich habe eine ähnliche Antwort auf diese Frage gestellt.
Der Standardansatz erfordert das Einfügen von Logik in die Ansichten und die Verwendung von String-Interpolation oder das Verschieben von Dingen in einen separaten Helfer.
Hier ist ein aktualisierter Ansatz, der das vermeidet:
%Vor%Der %code% -Helfer verwendet einen Hash mit Schlüssel / Wert-Paaren bestehend aus CSS-Klassennamen-Strings und booleschen Werten . Das Ergebnis der Methode ist eine Zeichenkette, in der der boolesche Wert als wahr ausgewertet wird.
Diese Technik wurde von einem Add-On namens %code% (früher bekannt als %code% ) aus dem Frontend-Framework %code% von Facebook inspiriert.
Ab sofort existiert die Funktion %code% in Rails nicht mehr, aber Dieser Artikel zeigt Ihnen, wie Sie es in Ihre Projekte einfügen oder implementieren.
Ich möchte die Klasse "versteckt" zu einem Rails Link-Tag hinzufügen, abhängig davon, ob "accepted == true".
Wenn ich kein Rails %code% verwenden würde, könnte ich %code% machen. Wie kann ich dies innerhalb von %code% erreichen?
%Vor%Sie können dies außerhalb von %code% :
tun %Vor%Ich habe die link_to überschrieben, um einen %code% -Parameter zu erwarten, probiere es aus:
%Vor%Und Verwendung:
%code%
Ich habe gerade eine Methode überschrieben, aber ein guter Refactor ist es, alle hier beschriebenen Signaturen zu überschreiben: Ссылка
Wenn Sie eine Interpolation mit # {} verwenden, wird alles, was Sie zwischen es einfügen, als einfacher alter Ruby-Code ausgeführt. In diesem Beispiel könnten Sie eine bedingte Klasse in der Zeichenfolge wie folgt hinzufügen:
%Vor% Bitte beachten Sie, dass Sie den Klassennamen "versteckt" in Anführungszeichen setzen sollten.
Beachten Sie auch, dass Sie, wenn eine Variable einen booleschen Wert (wahr oder falsch) darstellt, nicht explizit if accepted == true
sagen müssen. Sie können einfach if accepted
sagen.
Sie können auch einen Helfer verwenden, um den Link aufzubauen:
%Vor%Ich habe eine ähnliche Antwort auf diese Frage gestellt.
Der Standardansatz erfordert das Einfügen von Logik in die Ansichten und die Verwendung von String-Interpolation oder das Verschieben von Dingen in einen separaten Helfer.
Hier ist ein aktualisierter Ansatz, der das vermeidet:
%Vor%class_string
Methode Der class_string
-Helfer verwendet einen Hash mit Schlüssel / Wert-Paaren bestehend aus CSS-Klassennamen-Strings und booleschen Werten . Das Ergebnis der Methode ist eine Zeichenkette, in der der boolesche Wert als wahr ausgewertet wird.
Diese Technik wurde von einem Add-On namens classNames
(früher bekannt als classSet
) aus dem Frontend-Framework React
von Facebook inspiriert.
Ab sofort existiert die Funktion class_names
in Rails nicht mehr, aber Dieser Artikel zeigt Ihnen, wie Sie es in Ihre Projekte einfügen oder implementieren.
Ich habe die link_to überschrieben, um einen class_if
-Parameter zu erwarten, probiere es aus:
Und Verwendung:
<%= link_to(my_path, class: "class1", class_if: [true_or_false?, 'class2']) %>
Ich habe gerade eine Methode überschrieben, aber ein guter Refactor ist es, alle hier beschriebenen Signaturen zu überschreiben: Ссылка
Tags und Links ruby-on-rails ruby-on-rails-4