2016-05-08 5 views
-2

ich auf eine Anwendung arbeite und hier habe ich eine Seite der Menüleiste (Bild wird hier beigefügt) here is the link of screenshot.Schienen Seitennavigation durch die Seitenmenüleiste

, was ich will, ist durch dieses Menü zu navigieren, eigentlich möchte ich dieses Menü auf jeder in der Menüliste erwähnten Seite voreingestellt werden. Und auch hier sollte der Fokus auf den Link gelegt werden, auf dem ich mich gerade befinde. here I have attached screenshot of that too.

Ich dachte, meine Seite nav-Menü Code auf allen Seiten auf Menü zu wiederholen. Aber es wird den aktuell aktiven Link nicht aktiv/fokussieren. Irgendwelche besseren Lösungen? Was soll ich tun, um dieses Problem zu lösen?

Antwort

0

Sie können Ihr Menü in einem Teil setzen. es nennen wir _sidebar_menu.html.erb

Dann laden Sie es auf jeder Seite oder in Ihrem application.html.erb wie diese ->

<%= render partial: "layouts/sidebar_menu" %> "layouts" Ersetzen Sie bei jedem Ordner in dem Sie Ihre Menü Datei gespeichert haben.

So, jetzt haben Sie das Menü auf jeder Seite erscheinen. Sie können das Menü "auswählen" oder Ihre definierte Klasse hinzufügen, um es mithilfe von Javascript "aktiv" zu machen. Eine Möglichkeit ist, die URL zu überprüfen, und stellen Sie den entsprechende Link aktiv ist, oder Sie können Ihre Schienen Controller und die Aktion der Namen verwenden, um zu bestimmen, welche Verbindung zu aktivieren.

$(document).ready(function(){ 
    controller_name = "<%= params[:controller] %>" 
    //The controller name will be dynamically inserted by rails 
    $(".sidebar-menu li a").each(function(){ 
     if($(this).attr("href").toLowerCase().indexOf(controller_name) > -1){ 
      $(this).addClass("active") 
     } 
    }); 
}); 

Ich gehe davon aus, dass Ihre URL den Namen des Controllers enthält. Sie können auch den Aktionsnamen Ihres Controllers wie <%= params[:action] %> verwenden, um dies zu erreichen. Sie können damit herumspielen, um die Lösung zu finden, die in Ihrem Fall hilft. Ich hoffe, du kommst auf die Idee. Lass es mich wissen, wenn es funktioniert.

+0

Hey, das ist die richtige Antwort das einzige, was hier zu ändern, um diese Zeile 'if ($ (this) .attr ("href"). IndexOf (controller_name)> -1) {' statt 'if ($ (this) .attr ("href"). toDownCase(). indexOf (controller_name)> -1) {'. Vielen Dank! – rubhan

+0

Meine schlecht, ich gemischt Rubys 'downcase' mit JavaScripts' toLowerCase() '. Ich bin froh, dass es geklappt hat. – Kumar