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
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?
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%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]
)
BTW solange die Werte Ihres Params mit dem Spaltennamen übereinstimmen - es ist nicht nötig, jedes zu codieren
%Vor%Javascript oder jquery ist nicht erforderlich ..
Der folgende HAML funktioniert
%Vor%Tags und Links ruby css ruby-on-rails haml