使用HAML,我希望在一行中包含逗号,其中包含逗号。像这样,
Check me out on GitHub, Twitter, Coderwall and LinkedIn.
这就是我所拥有的:
%footer
Check me out on
%a{:href => url('http://github.com/bostonaholic')} Github
,
%a{:href => url('http://www.twitter.com/bostonaholic')} Twitter
,
%a{:href => url('http://coderwall.com/bostonaholic')} Coderwall
and
%a{:href => url('http://www.linkedin.com/in/mboston')} LinkedIn
\.
但是这样就出现了:
Check me out on GitHub , Twitter , Coderwall and LinkedIn .
如何解决此问题,以便逗号和句号位于正确的位置?
感谢。
答案 0 :(得分:5)
这是HAML中一个长期存在的巨大问题。我已经用两种不同的方式解决了这个问题。
1)我把我想要的文字放在数组元素中,并使用
join(', ')
但这是一种非常糟糕的做事方式。
2)仅限HAML"解决方案"在于特殊的>字符。 > character删除输出html中的空格,以便在输出此标记之前或之后没有空格。
这是我能够想到的最好的,而且我晚上睡不着觉,因为它可怕的丑陋。
%a{:href => 'here'} Github
%span> ,
%a{:href => 'there'} Twitter
关于这最后一项技术的说明。
一个。如果你不使用& nbsp;即使您的源代码中存在空格,您也不会获得空间。使用引号(%span>#{","})和空格不起作用,因为显然HAML会修剪输出。
湾您必须使用标记,因为使用>据我所知,只有在标签后才能使用。使用=>遗憾的是不行。这是我推荐的方法,但它无法解决最后丢失的空间。
3)在我的rails项目中,我使用了以下部分和帮助的组合:
partial:_haml_comma.html.haml
%span> ,
helper.rb
def comma
render :partial => "shared/haml_comma"
end
.haml文件:
%a{:href => 'here'} Github
= comma
%a{:href => 'there'} Twitter
答案 1 :(得分:5)
HAML已使用succeed
帮助程序考虑了此案例。文档:http://haml.info/docs/yardoc/Haml/Helpers.html#succeed-instance_method
这个HAML
click
= succeed '.' do
%a{:href=>"thing"} here
产生
click
<a href='thing'>here</a>.
答案 2 :(得分:1)
使用haml'reccess'帮助器(感谢@josal),这是一个干净,简单的方法:
%footer
Check me out on
= succeed ',' do
%a{:href => url('http://github.com/bostonaholic')} Github
= succeed ',' do
%a{:href => url('http://www.twitter.com/bostonaholic')} Twitter
= succeed 'and' do
%a{:href => url('http://coderwall.com/bostonaholic')} Coderwall
= succeed '.' do
%a{:href => url('http://www.linkedin.com/in/mboston')} LinkedIn
我发现我唯一需要的时候就是使用链接,但这是一个很好的工具,可以放在你的腰带里。