Ruby 如何在Middleman中生成导航?

Ruby 如何在Middleman中生成导航?,ruby,navigation,middleman,Ruby,Navigation,Middleman,总的来说,我只是习惯了和Ruby。生成具有活动状态的导航的最佳方法是什么?在当前版本的MM(2.x,尽管3.0已经接近),您可以通过在config.rb中添加以下内容以及在导航文件中进行一些调整来实现。以下是我漏掉一些关键点的情况: 首先创建一个助手函数: helpers do def nav_active(page) @page_id == page ? {:class => "Active"} : {} end end 然后,在(本例中为haml文件)中,您可以使用n

总的来说,我只是习惯了和Ruby。生成具有活动状态的导航的最佳方法是什么?

在当前版本的MM(2.x,尽管3.0已经接近),您可以通过在
config.rb
中添加以下内容以及在导航文件中进行一些调整来实现。以下是我漏掉一些关键点的情况:

首先创建一个助手函数:

helpers do
  def nav_active(page)
    @page_id == page ? {:class => "Active"} : {}
  end
end
然后,在(本例中为haml文件)中,您可以使用
nav_active
helper,如下所示:

#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')
这样做的最终结果是在为该页面构建页面时,将类“Active”添加到导航栏中的链接中。也就是说,如果页面是一个名为“index”的文件,那么
@page\u id
将是“index”,并且该链接将具有活动主题

要完成此示例,以下是定义活动的的的摘录:

&.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('stuff')都与i18n的翻译函数有关。你可以忽略这一点。我不想试图删除它们,从而使示例在语法上出错


希望这能有所帮助-也可以在论坛上看到。

这里有一个新的宝石,可以用
aria current
标记Middleman中的当前链接(您可以使用它来设置样式):

请参阅Thomas's helper for Middleman 3<代码>请求。路径表示当前URL路径。堆栈溢出已变得非常糟糕,您可以提出任何手册中有答案的问题,但您不能再提出有用的问题。不是真正的问题吗?我不认为这意味着你认为它意味着什么。如果我知道页面类将保持不变,我会这样做:class=>(page_class==“index”)?“活动”:”