2017-11-10 99 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。按預期工作。清楚的解釋;) –