Middleman - 子目录和子级上的活动类

时间:2014-09-16 23:26:01

标签: ruby-on-rails middleman

我是Middleman的新手,对于我的生活,我似乎无法在子目录的子目录中动态设置一个活动类到我的导航。

我有以下帮助程序集,它适用于子目录(例如:/ about /),但它不会将其应用于子项(例如:/about/otherpage.html)

module CustomHelpers
  def nav_link_to(link, url, opts={})
    if request.path == link
      prefix = '<li class="active">'
    else
      prefix = '<li>'
    end
    prefix + link_to(link, url, opts) + "</li>"
  end
end

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:3)

问题解决了!

围绕中间人博客,我发现EmberJS网站上的一个天才解决方案在GitHub上公开发布。

澄清一下,他们的帮助是:

def link_to_page name, url
    path = request.path
    current = path =~ Regexp.new('^' + url[1..-1] + '.*\.html')

    if path == 'index.html' and name == 'about'
      current = true
    end

    class_name = current ? ' class="active"' : ''

    "<li#{class_name}><a href=\"#{url}\">#{name}</a></li>"
  end

然后在ul标签中设置模板:

<%= link_to_page 'Projects', '/projects' %>

这适用于子目录及其子目录。

希望有所帮助!

答案 1 :(得分:0)

这是一个更短的版本:

在config.rb中:

foverlaps()

并在您的模板中,只需定义您要检查的路径:

helpers do
  def active_navigation(page)
    current_page.url.include?(page) ? "active" : ''
  end
end

现在,在URL路径包含“/ projects”的任何页面上,li将应用“活动”类。

因此,/ projects,/ projects / project1,/ projects / list等都将导致应用活动类。