我有一个小的HAML段落,其中包含以下链接:
%p
=link_to("My Disclosures", "#")
=link_to("Create Disclosure", "#")
=link_to("My Programs", "#")
=link_to("Log Out", "#")
我想做的是放一个像这样的分隔符“|”链接之间,但我不知道如何。我试着把它放在“”里面的文本旁边,但它成了链接文本的一部分。当我尝试将分隔符放在行尾时,它就没有显示出来。
任何想法如何让链接后的文字渲染为文本?
谢谢!
答案 0 :(得分: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", "#")
答案 1 :(得分: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的提示。
答案 2 :(得分: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的魔力转换为样式列表。
我知道我正在回答你提出的问题,但你应该知道解决这个用例的“正确”方法。