2

我有一个小的 HAML 段落,其中包含如下链接:

%p
  =link_to("My Disclosures", "#")
  =link_to("Create Disclosure", "#")
  =link_to("My Programs", "#") 
  =link_to("Log Out", "#")

我想要做的是放置一个像这样的分隔符“|” 链接之间,但我不知道如何。我尝试将它放在“”内的文本旁边,但它成为链接文本的一部分。当我尝试将分隔符放在行尾时,它只是没有出现。

知道如何让连字符在链接后仅呈现为文本吗?

谢谢!

4

3 回答 3

5

您可以将字符串本身写在自己的行上:

%p
  =link_to("My Disclosures", "#")
  |
  =link_to("Create Disclosure", "#")
  |
  =link_to("My Programs", "#") 
  |
  =link_to("Log Out", "#")

或者,您可以将其附加到输出字符串:

%p
  =link_to("My Disclosures", "#") << '|'
  =link_to("Create Disclosure", "#") << '|'
  =link_to("My Programs", "#") << '|'
  =link_to("Log Out", "#")
于 2012-04-20T16:12:29.763 回答
4

我有同样的问题。这就是我解决它的方法:

1)在模块ApplicationHelper中:

def links_bar(join_with = ' | ', &block)
  capture{yield}.split("\n").join(join_with).html_safe
end

2) 在任何方面:

= links_bar do
  = link_to("My Disclosures", "#")
  = link_to("Create Disclosure", "#")
  = link_to("My Programs", "#") 
  = link_to("Log Out", "#")

生成:

<a href="#">My Disclosures</a> | <a href="#">Create Disclosure</a> | <a href="#">My Programs</a> | <a href="#">Log Out</a>

我疯了吗?;)

感谢 Semyon Perepelitsa 的提示。

于 2012-04-20T17:18:52.320 回答
1

在这种情况下,您以错误的方式处理事情。

获得您想要的效果的更正确的方法是使用一点 CSS:

ul.nav {
  list-style:none;
  margin:0;
  padding:0
}

ul.nav li {
  margin:0;
  padding:0 0.5em;
  border-right:1px solid black
}

ul.nav li.last {
  border-right:none;
}

%ul.nav
  %li=link_to("My Disclosures", "#")
  %li=link_to("Create Disclosure", "#")
  %li=link_to("My Programs", "#") 
  %li.last=link_to("Log Out", "#")

这样你就有了一个简单的、语义正确的、可访问的和搜索引擎友好的链接列表,它使用 CSS 的魔力转换为样式列表。

我知道我正在回答与您提出的问题不同的问题,但您应该知道解决此用例的“正确”方法。

于 2012-06-22T16:12:56.933 回答