使用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
\.
Run Code Online (Sandbox Code Playgroud)
但这就是这样的:
Check me out on GitHub , Twitter , Coderwall and LinkedIn .
Run Code Online (Sandbox Code Playgroud)
我如何解决这个问题,以便逗号和句号位于正确的位置?
谢谢.
这是HAML中一个长期存在的巨大问题.我已经用两种不同的方式解决了这个问题.
1)我把我想要的文本放在数组元素中,并使用一个
join(', ')
Run Code Online (Sandbox Code Playgroud)
但这是一种非常害羞的做事方式.
2)HAML唯一的"解决方案"在于特殊的>字符.>字符删除输出html中的空格,因此在输出此标记之前或之后没有空白.
这是我能够想到的最好的,而且我在晚上睡不着觉,因为这是可怕的丑陋.
%a{:href => 'here'} Github
%span> ,
%a{:href => 'there'} Twitter
Run Code Online (Sandbox Code Playgroud)
关于这最后一项技术的说明
一个.如果你不使用 即使源代码中有空格,也不会占用空间.使用引号(%span>#{","})和空格不起作用,因为显然HAML会修剪输出.
湾 你必须使用一个标签,因为使用>只能在标签之后工作,据我所知.遗憾的是,使用=>不起作用.这是我推荐的方法,但它无法解决最后丢失的空间.
3)在我的rails项目中,我使用以下部分和帮助器的组合:
partial:_haml_comma.html.haml
%span> ,
Run Code Online (Sandbox Code Playgroud)
helper.rb
def comma
render :partial => "shared/haml_comma"
end
Run Code Online (Sandbox Code Playgroud)
.haml文件:
%a{:href => 'here'} Github
= comma
%a{:href => 'there'} Twitter
Run Code Online (Sandbox Code Playgroud)
HAML已经与succeed帮助者一起考虑了这个案例.文档:http://haml.info/docs/yardoc/Haml/Helpers.html#succeed-instance_method
这个HAML
click
= succeed '.' do
%a{:href=>"thing"} here
Run Code Online (Sandbox Code Playgroud)
产生
click
<a href='thing'>here</a>.
Run Code Online (Sandbox Code Playgroud)