2017-11-10 49 views
0

所以我有这片.erb代码我想要翻译为.haml。 (有的说HAML速度更快,我觉得自己还在学习曲线内strugling;))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翻译我有个大气压:

.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语句,那么.pull-right不应用于ul。

我还发现,以下更多因式分解代码无法正常工作,因为当前在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 

谢谢!

回答

0

我想你想是这样的:

.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元素设置的类。这消除了重复和link_to。它也缩进ul(在你的代码中if声明是在同一级别,所以li不会是它的孩子)。

+0

谢谢@matt。按预期工作。清楚的解释;) –