我的应用程序助手上有两个Rails助手:
def active_class(link_path)
current_page?(link_path) ? 'active' : ''
end
def active_class_white(link_path)
current_page?(link_path) ? 'active-white' : ''
end
[一个用于常规链接,另一个用于子菜单。通常我会这样放置链接:
<%= link_to "Home", root_path(:anchor => 'home'), class: "nav-link #{active_class('/')}", :"data-id" => "home" %>
现在这是我的问题。在我的主页上,我获得了此链接,该链接将滑至网站的特定部分,因此需要一个类似#about
的字符。如果我放置:
<%= link_to "About", root_path(:anchor => 'about'), class: "nav-link #{active_class('/#about')}", :"data-id" => "about" %>
它仍将活动类放在home
文本上,而不是关于(主页是一页滑块类型)。
另一件事是,对于像设计编辑配置文件这样的复杂网址,我尝试放置ff:
<%= link_to "Edit Profile", edit_user_registration_path(current_user), class: "dropdown-item #{active_class_white('/users/edit/:id')}" %>
放置/users/edit/:id
不适用于这种URL:http://localhost:3000/users/edit.13
在这两种URL上,我的代码无效。知道如何使它们工作或解决这个问题吗?
锚纯粹是客户端,不会随请求一起发送到服务器。因此,实现问题的第一部分的唯一方法是通过Javascript。您可以侦听链接上的click事件,然后将活动类添加到被单击的类。
您的问题的第二部分,您在:id
段关键字中传递,可以通过将路由辅助程序(以及对象)传递给current_page?
而不是显式字符串来解决...
class: <%= active_class(edit_user_registration_path(current_user)) %>