0

希望我没有重复一个问题。它类似于这个这个,但不完全一样。

关于重复的问题,这是我的问题。顺便说一句,我是 Rails 的新手。

我有一组(Twitter Bootstrap)药丸/标签,如果用户在与该标签关联的页面上,我希望将<li>类设置为。"active"到目前为止,我这样做是一种愚蠢的方式..在我的每一个观点中,我都有这个(简化):

<% content_for :pills do %>
  <li><a href="/">Home</a></li>
  <li class="active"><a href="/about">About</a></li> <----------- active class
  <li><a href="/contact">Contact</a></li>
<% end %>

并且在每个视图中我都有相同的代码(doh),但类设置"active"在另一个选项卡/药丸上。

大多数标签内容来自相同的app/views/<some view directory>/标签,但一个标签来自app/views/<some OTHER view directory>/但我想这不是问题。

如何在每个视图中不重复类似代码的情况下解决此问题?

非常感谢。

4

1 回答 1

1

我实际上遇到了同样的事情并创建了一个我在几个项目中使用过的助手。

将此添加到app/helpers/layout_helper.rb文件中。

module LayoutHelper
  def nav_class_for(*controllers)
    :active if controllers.any? do |controller|
      controller_name.to_sym == controller.to_sym || params["#{controller.to_s.singularize}_id"]
    end
  end
end

然后我像这样使用它。

<li class="<%= nav_class_for(:about) %>"><a href="/about">About</a></li>

只需将您希望菜单项激活的控制器或控制器的名称传递给它。对于这些控制器下的任何嵌套路由,它也应该是活动的。

于 2013-05-22T07:44:34.850 回答