我是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
任何帮助将不胜感激!
答案 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等都将导致应用活动类。