无法使link_to_unless_current工作

时间:2013-09-11 08:11:55

标签: ruby-on-rails ruby link-to

在有人向我指出link_to_unless_current之后,我想将其应用到我的信息中心侧边栏。但是,我无法让它工作,所以我猜我做错了。

这是我目前的侧栏

.dashboard_bar
  %ul
    = link_to admin_dashboard_path do
      %li.icon-dashboard
    = link_to admin_cs_dashboard_path do
      %li.icon-heart
    = link_to admin_dashboard_path do
      %li.icon-money
    = link_to admin_dashboard_path do
      %li.icon-group
    = link_to admin_dashboard_path do
      %li.icon-bug
    = link_to admin_dashboard_path do
      %li.icon-hdd

当我将link_to更改为link_to_unless_current时,它只是搞砸了我的CSS并且图标不再可点击。

有人可以告诉我如何解决它吗?

P.S。我确实查看了Rails guide,但仍然无法弄明白。

3 个答案:

答案 0 :(得分:0)

最可能的原因是你和admin_dashboard_path在同一个网址上。因此,您的所有链接都已停用并显示为文字。

答案 1 :(得分:0)

好的,在与更了解Rails的人坐下后,我们找到了以下解决方案:

.dashboard_bar
  %ul
    %li
      = link_to_unless_current '', admin_dashboard_path, :class => "icon-dashboard" do
        %span.icon-dashboard
    %li
      = link_to_unless_current '', admin_cs_dashboard_path, :class => "icon-heart" do
        %span.icon-heart
    %li
      = link_to_unless_current '', "#", :class => "icon-money" do
        %span.icon-money
    %li
      = link_to_unless_current '', "#", :class => "icon-group" do
        %span.icon-group
    %li
      = link_to_unless_current '', "#", :class => "icon-bug" do
        %span.icon-bug
    %li
      = link_to_unless_current '', "#", :class => "icon-hdd" do
        %span.icon-hdd

主要问题是链接位于li附近,而它们应位于li内。通过将类应用于:class => "icon-*"span的链接,我们设法创建了我正在寻找的外观和功能。

只要link_to_unless_current看到我在该链接的当前页面上,它就会将链接更改为范围,从而创建了在当前页面和其他链接的图标上使用css的可能性。

答案 2 :(得分:0)

将块传递给#link_to_unless_current并不会将块传递给#link_to:块的内容使用as an alternative content if link is indeed current path

所以,当你写:

= link_to admin_dashboard_path do
  %li.icon-money

您实际说的是:使用nil名称链接到admin_dashboard_path。但如果它是当前路径,请改为编写<li class="icon-money">

如果你想达到你想要的(链接中的列表项),你应该这样做:

= link_to_unless_current '<li class="icon-money"></li>'.html_safe, admin_dashboard_path

这在haml文件中非常奇怪,最好的解决方案可能是将链接保留在列表项中。