haml pull-right 作为第二个 class 在后跟 if 时不起作用

haml pull-right as a second class not working when followed by an if

所以我有一段 .erb 代码要翻译成 .haml。 (有人说 haml 更快,我想我仍在学习曲线中挣扎;))

<div class="row">
  <div class="col-md-12">
    <ul class="list-inline pull-right">
      <% if current_page?(webservices_path) %>
      <li class="submenu_links_current">
      <% else %>
      <li class="submenu_links">
      <% end %>
        <%= link_to webservices_path do %>
          <i class="fa fa-home" aria-hidden="true" style="color: white;"></i>
          Webservices
        <% end %>
      </li>
    </ul>
  </div>
</div>

最近的 haml 翻译我有 atm :

.row
  .col-md-12
    %ul.list-inline.pull-right
    - if current_page?(webservices_path)
      %li.submenu_links_current
        = link_to webservices_path do
          %i.fa.fa-home{"aria-hidden" => "true", "style" => "color: white;"}
          Webservices
    - else
      %li.submenu_links
        = link_to webservices_path do
          %i.fa.fa-home{"aria-hidden" => "true", "style" => "color: white;"}
          Webservices

我现在有两个关于这个 haml 的问题。

.如果 ul 和 li 之间有 if 语句,则不向 ul 应用 pull-right。

我还发现以下更分解的代码不起作用,因为当前在 webservices_path 上时,link_to webservices_path 未显示。

.row
  .col-md-12
    %ul.list-inline.pull-right
    - if current_page?(webservices_path)
      %li.submenu_links_current
    - else
      %li.submenu_links
        = link_to webservices_path do
          %i.fa.fa-home{"aria-hidden" => "true", "style" => "color: white;"}
          Webservices

谢谢!

我想你想要这样的东西:

.row
  .col-md-12
    %ul.list-inline.pull-right
      %li{:class => (current_page?(webservices_path) ? 'submenu_links_current' : 'submenu_links')}
        = link_to webservices_path do
          %i.fa.fa-home{"aria-hidden" => "true", "style" => "color: white;"}
          Webservices

请注意,两个 li 已合并为一个元素,使用散列的 class 元素而不是点语法设置 class。这删除了 ​​link_to 的重复和。它还在 ul 下缩进(在您的代码中,if 语句处于同一级别,因此 li 不会是它的子项)。