Rails导航助手方法

问题描述 投票:2回答:1

我的应用程序助手上有两个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上,我的代码无效。知道如何使它们工作或解决这个问题吗?

ruby-on-rails
1个回答
0
投票

锚纯粹是客户端,不会随请求一起发送到服务器。因此,实现问题的第一部分的唯一方法是通过Javascript。您可以侦听链接上的click事件,然后将活动类添加到被单击的类。

您的问题的第二部分,您在:id段关键字中传递,可以通过将路由辅助程序(以及对象)传递给current_page?而不是显式字符串来解决...

class: <%= active_class(edit_user_registration_path(current_user)) %>
© www.soinside.com 2019 - 2024. All rights reserved.