【发布时间】:2011-12-01 17:48:58
【问题描述】:
我有一个像这样的简单导航栏:
<ul class="nav">
<li><a href="<%= index_url %>">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="<%= users_url %>">Users</a></li>
</ul>
这是 rails 项目中 application.html.erb 文件的一部分。我希望在当前页面上设置class="active" 属性,但是这很复杂,因为导航栏位于模板中,该模板使用<%= yield %> 生成应用程序的其余部分。如何根据正在加载的页面可靠地设置活动选项卡?
...javascript 被删除,因为它分散了实际问题的注意力。
澄清一下:
Rails 会加载 application.html.erb,它会在调用 <%= yield %> 并渲染我正在加载的任何视图之前渲染所有内容,包括此导航。
当我显示 users/index.html.erb 文件或 users/show.html.erb(基本上来自用户模型的任何内容)时,我希望“用户”选项卡具有 class="active"一个合适的 Rails 方式来做到这一点?
我知道我可以将导航栏移动到每个模型的视图模板并手动设置活动类,但这不是很“干”。
【问题讨论】:
-
您当前的代码删除然后将类添加到仅单击的元素 - 您可能是指
$(".nav > li").removeClass("active")首先从所有lis 中删除该类。 -
好的,所以我的 javascript 不正确,但我最初的问题仍然存在,如何在导航栏加载后(通过应用程序模板)更改链接上的活动类。一旦我设置了一个类并且点击通过它将加载新页面并清除类设置。
标签: ruby-on-rails ruby