我正在使用Rails,并且有一个Bootstrap导航栏。我需要这样做,以便根据您单击的导航栏选项卡(“主页”,“ OOTD”,“帐户”),它会以某种方式(例如白色文本)突出显示。我试图使用active
甚至是应该切换它的功能来使它动态地工作,但是它不起作用。
我的application.html.erb
,其中包含我的导航栏:
<!DOCTYPE html>
<html>
<head>
<title>Finalproj493</title>
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark" style="width: 100%; height: 5vw;">
<ul class="navbar-nav mr-auto nav">
<li class="nav-item">
<a class="nav-link" href="/welcome/index">Home</a>
</li>
<li class="nav-item 1">
<a class="nav-link" href="/ootd">OOTD</a>
</li>
<li class="nav-item 2">
<a class="nav-link" href="/account">Account</a>
</li>
</ul>
</nav>
<br>
<br>
<%= yield %>
</body>
</html>
我试图使用is_active()
函数动态切换(“滚动”方式),但是它不起作用。该函数位于我的application_helper.rb
中,并且在我的导航栏中添加了函数调用(如上所示):
module ApplicationHelper
def is_active(action)
params[:action] == action ? "active" : nil
end
end
也许我会采用错误的方式,但是有人可以建议一种简单的方法来将active
导航栏样式纳入Rails吗?
答案 0 :(得分:1)
您可以使用current_page?
来设置活动的班级。您可以在app/helpers/application_helper.rb
中创建一个方法:
def active_class(path)
"active" if current_page?(path)
end
,您可以像这样使用它:
<li class="<%= active_class(welcome_index_path) %>">
current_page?
将返回true并设置active
类,如果当前请求URI是由path
参数生成的。
您可以详细了解current_page?
here。