2012-04-12 6 views
0

So habe ich dies in meiner application.html.erb Datei:Rails Highlight aktuelles Menü Kirchenschiff in Seite

<div class="mainMenu"> 
<%= link_to 'Movies', dvds_path %> 
<%= link_to 'Books', books_path %> 
<%= link_to 'Albums', cds_path %> 
<%= link_to 'Games', games_path %> 
</div> 

Ich mag eine Klasse von „Highlight“ in den Menüs setzen, wenn wir auf jedem sind die Seiten, so zum Beispiel in den Filmen Seite, wenn wir in dvds_path sind dann wäre es:

<%= link_to 'Movies', dvds_path, :class => 'highlight' %> 

Aber können nicht scheinen, um herauszufinden, keine dieser Methoden für mich gearbeitet:

using the controller

using a helper

Jede Hilfe

würde geschätzt

Antwort

1

könnten Sie verwenden:

link_to_unless_current(name, options = {}, html_options = {}, &block) 

Erzeugen einen Link-Tag des Vornamens eine URL durch den Satz von Optionen, es sei denn die aktuelle Anforderung erstellt URI ist identisch mit den Links. In diesem Fall wird nur der Name zurückgegeben (oder der angegebene Block wird zurückgegeben, falls einer existiert). Sie können link_to_unless_current einen Block geben, der das Standardverhalten spezialisieren wird (z. B. einen Link "Hier starten" und nicht den Link-Text).

http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to_unless_current

So könnten Sie Ihre ‚Links‘ Stil als nicht ausgewählte in Ihrer Navigationsleiste und hat einen ‚ausgewählt‘ Stil, wenn die Verbindung nicht vorhanden ist ..

li { color:#fff; } /* selected */ 
li a { color:#333; } 
li a:hover { color:#999; } 

<ul id="navbar"> 
    <li>Home</li> 
    <li><a href="/controller/about">About Us</a></li> 
</ul> 
+0

das funktioniert super aber ich kann keins setzen Bild in der nicht ausgewählten (aktuellen) Verbindung, weil es keinen Mechanismus gibt, um die Klasse mit Hervorhebung darauf zu setzen, da es überhaupt keine Verbindung ist. Ich habe versucht, das Hintergrundbild für diejenigen, die Links sind, auf keine einzustellen, aber das hat nicht funktioniert. Kann ich der aktuellen Seite (die keine Verknüpfung mehr ist) eine Klasse geben? Wenn ja, wie würde ich es tun? – kakubei

+0

siehe Antwort unten .. – RGB

0

Im ziemlich sicher, dass Wenn Sie es in einen Do-Block setzen, können Sie einen alternativen Inhaltswert zuweisen, wenn die Verbindung aktuell ist.

Der implizite Block link_to_unless_current wird ausgewertet, wenn die aktuelle Aktion die angegebene Aktion ist. Also, wenn wir eine Kommentarseite hatten und einen "Zurück" -Link anstelle eines Links zu der Kommentarseite rendern wollten, könnten wir so etwas machen ...

<%= 
    link_to_unless_current("Comment", { :controller => "comments", :action => "new" }) do 
    image_tag src=>"/image.jpg" 
    end 
%> 
+0

Ja, ich konnte es aus dem Beispiel auf dem Link, den Sie gesendet haben, herausfinden, danke nochmal. – kakubei