Ruby использует условный оператор для проверки текущего пути - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь создать панель навигации, которая выделяет элемент li, на которой я нахожусь.

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

<li id="home-link" data-hook class="<%= root_path ? "active" : "" %>"><%= link_to Spree.t(:Home), spree.root_path %></li>
<% if spree_current_user %>
  <li id="home-link" data-hook class="<%= products_path ? "active" : "" %>" ><%= link_to Spree.t(:products), spree.products_path %></li>
<% end %>

Что я тогда ожидаю, так это то, что если я на главной странице, то li получит класс active,

В настоящее время происходит то, что все элементы li активируют класс.

Как я могу проверить текущий путь?

1 Ответ

0 голосов
/ 17 мая 2019

Нет, вы проверяете, являются ли помощники пути true, и они возвращают String. Вот почему active всегда установлен.

Взгляните на current_page? :

<% product_active = 'active' if current_page?(controller: 'products', action: 'index') %>
<li id="home-link" data-hook class="<%= product_active %>">

РЕДАКТИРОВАТЬ: Как подсказки @NensiMakawana, вы можете альтернативно использовать active_link_to драгоценный камень.

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