2012-03-19 32 views
9

我剛剛習慣了Middleman和Ruby。用活動狀態生成導航的最佳方式是什麼?如何在Middleman中生成導航?

+0

見托馬斯[magic_link_to](https://github.com/middleman/ middleman/issues/303#issuecomment-4362124)Middleman 3的助手。request.path表示當前的URL路徑。 – sam 2012-11-30 07:21:47

+0

堆棧溢出已變得如此悲傷,以至於您可以詢問任何在手冊中有答案的問題,但您無法再提出有用的問題。不是一個真正的問題?我不認爲這意味着你的想法。 – 2014-04-21 15:15:36

回答

9

在當前版本的MM(2.x,儘管3.0已關閉)中,您可以在config.rb中添加以下內容並在您的導航文件中進行一些調整。這裏是a working version的情況下,我忽略了一些關鍵位:

首先創建一個輔助函數:

helpers do 
    def nav_active(page) 
    @page_id == page ? {:class => "Active"} : {} 
    end 
end 

然後,在nav bar include file(在這種情況下,它是一個HAML文件),您可以使用nav_active助手爲如下:

#HeaderNavigationBar 
    %ul 
    %li{nav_active("index")}= link_to t('top_navigation.home'), t('paths.index') 
    %li{nav_active("pricing")}= link_to t('top_navigation.pricing'), t('paths.pricing') 
    %li{nav_active("faq")}= link_to t('top_navigation.faq'), t('paths.faq') 

這樣做的最終結果是對類「活動」添加到鏈接的導航欄時頁面大樓建成了這個網頁。即如果頁面是一個名爲「index」的文件,那麼@page_id將是「索引」,並且該鏈接將具有活動主題。

爲了完成這個例子,這裏是從定義活躍的scss style partial摘錄:

&.Active { 
    font-weight: bold; 
} 

在頭文件的後續版本,我們實際上在活動頁面上刪除時的鏈接。它看起來是這樣 - 這可以清楚地收拾,但FWIW:d:

%li{nav_active("index")} 
    -if "index" == @page_id 
    = t('top_navigation.home') 
    -else 
    = link_to t('top_navigation.home'), root() 
    ... (etc) 

注意,所有的T(「東西」),具有與國際化翻譯功能做。你可以忽略它。我不想通過嘗試刪除它們來使該示例語法錯誤。

希望這有助於 - 也可以在http://forum.middlemanapp.com/看到論壇。

+0

我這樣做,如果我知道頁面類將保持不變 :class =>(page_classes ===「index」)? 「主動」:「」 – 2013-04-21 14:33:24