Dynami c подсветка навигационной панели в зависимости от выбранной вкладки - PullRequest
0 голосов
/ 15 апреля 2020

Я использую Rails и у меня есть Bootstrap navbar. Мне нужно сделать так, чтобы в зависимости от того, на какой вкладке панели навигации вы щелкаете («Домой», «OOTD», «Аккаунт»), он каким-то образом выделяется (например, белым текстом). Я попытался динамически заставить его работать, используя active и даже функцию, которая должна его переключать, но она не работает.

My application.html.erb, которая содержит мою панель навигации:

<!DOCTYPE html>
<html>
  <head>
    <title>Finalproj493</title>
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
    <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
  </head>

  <body>
    <nav class="navbar navbar-expand-lg navbar-dark bg-dark" style="width: 100%; height: 5vw;">
    <ul class="navbar-nav mr-auto nav">
      <li class="nav-item">
        <a class="nav-link" href="/welcome/index">Home</a>
      </li>
      <li class="nav-item 1">
        <a class="nav-link" href="/ootd">OOTD</a>
      </li>
      <li class="nav-item 2">
        <a class="nav-link" href="/account">Account</a>
      </li>
    </ul>
    </nav>

    <br>
    <br>

    <%= yield %>
  </body>
</html>

Я пытался использовать функцию is_active() для динамического переключения (способ "Rails"), но она не работала. Эта функция находится в моем application_helper.rb, и я добавил к ней вызов функции в моей навигационной панели (показано выше):

module ApplicationHelper

    def is_active(action)       
        params[:action] == action ? "active" : nil        
    end
end

Возможно, я поступаю неправильно, но кто-то может предложить простой способ, который включит active стиль navbar в Rails?

1 Ответ

1 голос
/ 16 апреля 2020

Вы можете использовать current_page? для установки активного класса. Вы можете создать метод в app/helpers/application_helper.rb:

def active_class(path)
 "active" if current_page?(path)
end

и использовать его следующим образом:

<li class="<%= active_class(welcome_index_path) %>">

current_page? вернет true и установит класс active, если текущий URI запроса был сгенерирован аргументом path.

Подробнее о current_page? можно прочитать здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...