如何突出rails 3中的当前链接

时间:2014-05-08 12:51:18

标签: html css ruby-on-rails

我正在努力突出强大的链接。我用这个问题提出了想法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;

}

我得到的是所有链接都是红色的。我不明白。对于其他人,它工作得很好。

2 个答案:

答案 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(完整路径)而不是相对路径,情况会更好。交叉检查和理解也很清楚。