Bedingte Einstellung des CSS-Stils vom Ruby-Controller

7

Ich versuche, eine normale Tabellenüberschrift (die eine Verknüpfung ist) zu einer anderen definierten CSS-Klasse "th.hilite" dynamisch zu ändern (wenn sie angeklickt wurde). Dieser Link sortiert diese Spalte einfach und der Header sollte jedes Mal hervorgehoben werden, wenn ein Benutzer die Liste sortiert.

Die Ansicht, in der die betreffende Klasse geändert werden sollte, sieht so aus:

%Vor%

Meine Frage lautet einfach: Wie und wo könnte ich die Klasse dynamisch auf% th.hilite setzen, wenn auf die Kopfzeile geklickt wird?

    
Proghero 10.03.2012, 13:27
quelle

5 Antworten

14

Achten Sie darauf, dass Sie keine Logik (auch keine Bedingungen) in Ihre Ansichten einfügen, wenn Sie einen Weg finden können. Um diesen häufigen Fehler zu vermeiden, müssen Sie die Parameter params und session hashes gut nutzen und entsprechende Variablen in Controllern setzen

%Vor%     
mehtunguh 07.08.2012, 03:24
quelle
26

Sie können es direkt aus der Ansicht binden:

%th{:class => ("hilite" if @sort == "title")}= link_to 'Movie Title'...

Sie müssen jedoch auch die Instanzvariable @sort in Ihrem Controller deklarieren und sie entweder auf title oder auf release setzen, je nachdem, zu welcher Spalte Sie gehören Sortierung. (d. h. @sort = params[:sort] )

    
Szilard Muzsi 10.03.2012 18:00
quelle
3

BTW solange die Werte Ihres Params mit dem Spaltennamen übereinstimmen - es ist nicht nötig, jedes zu codieren

%Vor%     
webstranger 12.03.2012 03:30
quelle
3

Javascript oder jquery ist nicht erforderlich ..

Der folgende HAML funktioniert

%Vor%     
user1575511 04.08.2012 02:47
quelle
-2

Sie sollten dazu JavaScript verwenden. Ich denke, es ist eine gute Idee für Sie, jQuery anstelle von reinem JavaScript zu verwenden. Hier sind einige Beispiele

Ссылка

Ссылка

    
Ximik 10.03.2012 13:30
quelle

Tags und Links