0

我有以下类型的页面设置:

标题 - 一致左侧 - 包含 <%= yield %> 右侧 - ul 主要包含静态菜单

所以,我想做的是a)向当前页面li添加一个类。所以例如在about页面上,右边的about li会添加.current

b) 在当前页面的右侧显示子菜单。因此,如果 li 是 about.current,我可以在该 li 内显示一个子菜单。

每个页面都有布局(应用程序布局的目的也是如此),并不是每个页面都列在右侧的菜单中。所以,问题是我是否可以传递一个变量或一个调用,将页面名称传递给应用程序布局以允许添加 .current 或处理此类事情的最佳方法是什么?答案是不是在应用程序布局中不包含正确的菜单栏,即使我需要将它添加到每个页面?

寻找建议。

4

1 回答 1

1

current_page?helper 方法可以告诉您 url 是否适用于当前页面。因此,您可以执行以下操作:

<li><%= link_to "Something", something_url, :class => (current_page?(something_url) ? "current" : "") %></li>

更好的是,您可以定义一个自动执行此操作的辅助方法:

def link_to_with_current_class(name, url, options = {})
  if current_page?(url)
    if options[:class]
      options[:class] += " current"
    else
      options[:class] = "current"
    end
  end
  link_to(name, url, options)
end

接着:

<li><%= link_to_with_current_class "Something", something_url %></li>

http://apidock.com/rails/ActionView/Helpers/UrlHelper/current_page%3F

于 2012-10-01T23:36:50.303 回答