如何在带有白色 space 的 HTML 标签中的 Rails 三元运算符上编写内联 Ruby?

How do you write inline Ruby on Rails ternary operators in an HTML tag with white space?

我目前 运行 遇到一个问题,我试图通过使用三元运算符使 li 标签具有基于 Ruby 变量的特定 classes:

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

如果@ruby_var 为真,我希望结果是一个包含导航项和活动 classes 的 li 元素:

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

但是,由于某种原因,我得到了意想不到的结果,它只将 class 设置为三元运算符中字符串的第一个 部分 ,并将第二部分留在 class 标签之外:

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

我试过在我的 "nav-item active" 字符串中使用多个 space 但任何白色 space 似乎都使 class 只接受字符串中的第一个元素.

使用三元运算符设置 HTML 标签的 classes 的正确方法是什么?

可以这样写

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

注意 erb 表达式外的 "

或者你可以这样使用tag helper

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

我更喜欢第二个选项,因为我不喜欢在描述标签时混合使用 HTML 和 ERB。