Fügen Sie in Rails bedingt eine Klasse zu link_to hinzu

7

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?

%Vor%     
Don P 13.03.2014, 19:34
quelle

5 Antworten

12
___ qstnhdr ___ Fügen Sie in Rails bedingt eine Klasse zu link_to hinzu ___ answer22390158 ___

Sie können auch einen Helfer verwenden, um den Link aufzubauen:

%Vor%     
___ answer23229960 ___

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.

    
___ tag123rubyonrails ___ Ruby on Rails ist ein Open-Source-Full-Stack-Webanwendungs-Framework, das in Ruby geschrieben ist. Es folgt dem populären MVC-Framework-Modell und ist bekannt für seinen "convention over configuration" -Ansatz für die Anwendungsentwicklung. ___ tag123rubyonrails4 ___ Für Probleme, die für Version 4 von Rails spezifisch sind. Wenn Ihre Frage generell auf Ruby on Rails zutrifft, verwenden Sie das Tag [ruby-on-rails]. ___ answer41724343 ___

Ich habe eine ähnliche Antwort auf diese Frage gestellt.

Eine sauberere Lösung

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%

%code% Methode

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.

Beispiel Verwendung

%Vor%

Inspiriert von Reagieren

Diese Technik wurde von einem Add-On namens %code% (früher bekannt als %code% ) aus dem Frontend-Framework %code% von Facebook inspiriert.

Verwendung in Ihren Rails-Projekten

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.

    
___ qstntxt ___

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%     
___ antwort22389139 ___

Sie können dies außerhalb von %code% :

tun %Vor%     
___ answer46167652 ___

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: Ссылка

    
___
MurifoX 13.03.2014, 19:37
quelle
17

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.

    
Adam Waselnuk 22.04.2014 20:52
quelle
4

Sie können auch einen Helfer verwenden, um den Link aufzubauen:

%Vor%     
Caleb Thompson 13.03.2014 20:27
quelle
0

Ich habe eine ähnliche Antwort auf diese Frage gestellt.

Eine sauberere Lösung

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.

Beispiel Verwendung

%Vor%

Inspiriert von Reagieren

Diese Technik wurde von einem Add-On namens classNames (früher bekannt als classSet ) aus dem Frontend-Framework React von Facebook inspiriert.

Verwendung in Ihren Rails-Projekten

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.

    
Carlos Ramirez III 18.01.2017 16:20
quelle
0

Ich habe die link_to überschrieben, um einen class_if -Parameter zu erwarten, probiere es aus:

%Vor%

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: Ссылка

    
Bruno Casali 12.09.2017 03:54
quelle