Bedingt die Einstellung CSS-Stil von ruby-controller
Ich versuche, dynamisch zu ändern (wenn es angeklickt) eine normale Tabelle-header (das ist ein link) zu einer anderen definiert CSS-Klasse 'th.hilite'. Diesen link einfach sortiert diese Spalte und die Kopfzeile sollte habe hervorgehoben, jedes mal, wenn ein Benutzer sortiert die Liste.
Blick, wo die Klasse in Frage, sollte geändert werden, sieht wie folgt aus:
%table#mytable
%thead
%tr
%th= link_to 'Title', mytable_path(:sort => 'title'), :id => 'title_header'
Meine Frage ist einfach nur: Wie und wo könnte ich dynamisch stellen Sie die Klasse auf %th.hilite, wenn die Kopfzeile geklickt?
- Sie müssen dies tun, in Javascript, nicht in ruby.
- Sie müssen nicht und sollten nicht verwendet JavaScript, dies zu tun. Außer, dass Sie sollten tun, die SaaS-Hausaufgaben #2 von selbst. Hinweis: Die vorgestellten Antwort richtig ist.
- Sollten Sie nicht in der Entsendung Fragen, die direkt aus der saas-class.org Hausaufgaben 2 Zuordnung hier. Sie sollten sich Fragen, wie etwas zu tun.. aber nicht die genaue Antwort auf deine Frage.
- Am wichtigsten, sollten Sie NICHT gepostet haben, der obige code, der direkt zeigt, wie der Antwort-Teil der Frage. Seine nur schlecht Verhalten.
- Es ist ziemlich enttäuschend, dass, wenn ich die Suche nach Informationen über conditional rendering in haml, dass dies der erste link auf google. Jeder, der sich angemeldet, der Kurs stimmte der Ehre-code, es ist nur schade, dass einige Leute keine persönliche Ehre mehr.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vorsichtig sein, nicht mit Logik (auch Bedingungen) in Ihren Ansichten, wenn Sie einen Weg finden können, um es. Um dies zu vermeiden häufige Fehler, die Sie brauchen, um gute Verwendung des params und session-hashes und setzt die entsprechenden Variablen im Controller
Können Sie binden Sie es aus der Ansicht direkt:
%th{:class => ("hilite" if @sort == "title")}= link_to 'Movie Title'...
Aber Sie haben auch zu erklären, dass die
@sort
Instanz-variable in Ihrem controller, und legen Sie es entweder Titel oder release, nach welcher Spalte Sie Sortieren. (d.h.@sort = params[:sort]
)BTW solange die Werte der Parameter-Spalte "match" Namen - keine Notwendigkeit, code jeder
Javascript oder jquery ist nicht erforderlich..
Den folgenden HAML funktioniert
Sollten Sie JavaScript verwenden, um dies zu tun. Ich denke, es ist eine gute Idee für Sie, um jQuery verwenden anstelle von reinem JavaScript. Hier sind einige Beispiele
http://api.jquery.com/click/
http://api.jquery.com/css/