每页更改应用布局

时间:2012-10-01 22:09:41

标签: ruby-on-rails templates

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

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

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

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

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

寻找建议。

1 个答案:

答案 0 :(得分:1)

current_page?辅助方法可以告诉您网址是否适用于当前页面。所以你可以做类似以下的事情:

<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