Как написать inline Ruby на троичных операторах Rails в теге HTML с пробелами? - PullRequest
0 голосов
/ 15 января 2020

В настоящее время я сталкиваюсь с проблемой, когда пытаюсь заставить тег li иметь определенные c классы, основанные на переменной Ruby, используя троичный оператор:

<li class=<%= loc == @ruby_var ? "nav-item active" : "nav-item" %>>
...
</li>

Я ожидаю результаты должны быть элементом li как с nav-item, так и с активными классами, если @ruby_var имеет значение true:

<li class="nav-item active">
...
</li>

Однако по некоторым причинам я получаю неожиданные результаты, когда он только устанавливает класс в первая часть строки, которая находится в троичном операторе, и оставляет вторую часть вне тега класса:

<li class="nav-item" active>
...
</li>

Я попытался использовать более одного пробела в моем "nav" -item active "string, но любое пустое пространство, кажется, заставляет класс принимать только первый элемент в строке.

Как правильно использовать троичный оператор для установки классов тега HTML?

1 Ответ

1 голос
/ 15 января 2020

Вы можете написать это так:

<li class="<%= loc == @ruby_var ? "nav-item active" : "nav-item" %>">
  # ...
</li>

Обратите внимание на " вне выражения erb.

Или Вы можете использовать помощник по тегам вот так

<%= tag.li, class: ["nav-item", (:active if loc == @ruby_var)] do %>
  # ...
<% end %>

Мне больше нравится второй вариант, потому что я предпочитаю не смешивать HTML и ERB при описании тега.

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