我正在努力突出强大的链接。我用这个问题提出了想法here
我有简单的菜单,基于这种结构:
<li>
<%= @waste_root.name %>
<ul>
<% @wast_child_ids.each do |it| %>
<li><%= link_to it.name, products_path(:category => it.name), class: "#{cp(products_path)} additional_class" %>
</li>
<%end%>
</ul>
</li>
在Aplication helper中:
def cp(path)
"current" if current_page?(path)
end
在CSS文件中:
.current {
color:red;
}
我得到的是所有链接都是红色的。我不明白。对于其他人,它工作得很好。
答案 0 :(得分:2)
您需要传递类别。
<%= link_to it.name, products_path(:category => it.name), class: "#{cp(products_path(:category => it.name))} additional_class" %>
他们都在产品路径上,因为您只是根据参数进行区分。因此,只需传递产品路径,它们都会返回true,您需要根据参数进行区分,方法是在链接中传递它们
答案 1 :(得分:2)
我认为你的观点应该是这样的:
<li>
<%= @waste_root.name %>
<ul>
<% @wast_child_ids.each do |it| %>
<li><%= link_to it.name, products_path(:category => it.name), class: "#{cp(products_path(:category => it.name))} additional_class" %>
</li>
<%end%>
</ul>
</li>
因为,您在category
中传递了一个参数products_path
,因此current_page?
无法判断正确的相对路径。此外,如果您使用_url
(完整路径)而不是相对路径,情况会更好。交叉检查和理解也很清楚。