2016-05-08 5 views
-2

Я работаю над приложением, и здесь у меня есть строка меню стороны (изображение прилагается здесь) here is the link of screenshot.рельсов навигации по страницам через меню боковой

, что я хочу, чтобы перемещаться по этому меню, на самом деле я хочу это меню для каждой страницы, указанной в списке меню. А также следует сосредоточиться на ссылке, на которой я сейчас веду. here I have attached screenshot of that too.

Я подумывал повторить код навигационного меню на всех страницах меню. Но он не будет активно/фокусировать текущую активную ссылку. Какие-нибудь лучшие решения? Что я должен сделать, чтобы решить эту проблему?

ответ

0

Вы можете поместить свое меню в частичное. Назовём это _sidebar_menu.html.erb

Тогда вы загрузите его на каждой странице или в application.html.erb, как это ->

<%= render partial: "layouts/sidebar_menu" %> Заменить "layouts" с любую папку, внутри которой вы сохранили файл меню.

Итак, теперь вы видите меню на каждой странице. Вы можете «выбрать» меню или добавить свой определенный класс, чтобы сделать его «активным», используя некоторый javascript. Один из способов - проверить URL-адрес и активировать соответствующую ссылку, или вы можете использовать свой контроллер рельсов и имя действия, чтобы определить, какую ссылку активировать.

$(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") 
     } 
    }); 
}); 

Я предполагаю, что ваш url имеет имя контроллера в нем. Вы также можете использовать имя вашего контроллера, например <%= params[:action] %>, чтобы его достичь. Вы можете поиграть с ним, чтобы найти решение, которое поможет в вашем случае. Надеюсь, вы поняли эту идею. Дайте мне знать, если это сработает.

+0

Эй, это правильный ответ. Единственное, что нужно изменить здесь, это строка 'if ($ (this) .attr (" href "). IndexOf (имя_контроллера)> -1) {' вместо 'if ($ (this) .attr ("href"). toDownCase(). indexOf (имя_контроллера)> -1) {'. Благодаря! – rubhan

+0

Неплохо, я перепутал «нижний регистр» ruby ​​с 'toLowerCase()' javascript. Я рад, что это сработало. – Kumar

Смежные вопросы