HAML - 如何在链接之间放置常规文本

时间:2012-04-20 16:10:13

标签: ruby-on-rails haml

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

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

我想做的是放一个像这样的分隔符“|”链接之间,但我不知道如何。我试着把它放在“”里面的文本旁边,但它成了链接文本的一部分。当我尝试将分隔符放在行尾时,它就没有显示出来。

任何想法如何让链接后的文字渲染为文本?

谢谢!

3 个答案:

答案 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的魔力转换为样式列表。

我知道我正在回答你提出的问题,但你应该知道解决这个用例的“正确”方法。