0

在有人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,并且图标不再可点击。

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

PS我确实查看了Rails指南,但似乎仍然无法弄清楚。

4

3 回答 3

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 创造了可能性。

于 2013-09-11T09:15:20.927 回答
0

将块传递给#link_to_unless_current与将块传递给的行为不同:如果链接确实是当前路径#link_to,则块的内容将用作替代内容。

所以,当你写:

= 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 文件中很奇怪,最好的解决方案可能是将链接保留列表项中。

于 2013-09-11T09:40:13.327 回答
0

最可能的原因是您的网址与 admin_dashboard_path 相同。因此,您的所有链接都被禁用并显示为文本。

于 2013-09-11T08:54:53.817 回答