如何在HAML中制作一个简单的点“.”?

25

在我的Ruby on Rails项目中,我使用HAML,需要翻译类似于这样的东西

<div>foo <a>bar</a>.<div>

转换为HAML格式后,它应该如下所示:

.divclass
  foo
  %a bar
  .     

因为HAML使用了句点,所以在开头使用句点无法起作用。那么如何将句点作为内容使用?

即使通过构建一个span尝试解决,也无法生效,因为句点被视为特殊字符。

我认为有一种转义机制,但我找不到它。


4
在HAML中,与大多数其他语言一样,可以使用反斜杠进行转义。当学习一门新语言时,这应该是您尝试的第一件事情。 - user229044
HAML也有很好的文档:http://haml.info/docs/yardoc/file.HAML_REFERENCE.html - mwolfetech
4个回答

39

它通过\进行转义

像这样

\.

请参考HAML文档中的转义字符\部分。

更新: 如果需要在句子末尾添加点号以避免不必要的空格,使用HAML的succeed(如此答案中所示)是更好的解决方案。


1
这里的问题在于,在他的情况下,a标签和点之间会有一个空格。建议使用@Jay的succeed方法。 - Jeremy F.

20

更好的方法:

%p
  This sentence ends with a link which is *just* before a period
  = succeed "." do
    %a{:href => "#"} link
  But the period wasn't included with the link and there was no space before the period.

2
能够解释一下这个方法的优势会更好。 - Wayne Conrad

2

我将使用Rails内置的link_to助手添加另一个选项,而不是手动创建链接。然后你可以简单地执行以下操作:

%p
  This sentence ends with a link which is *just* before a period
  #{ link_to "link", "#" }.

不同的地方会有不同的解决方案,但我觉得这个方法非常简洁,特别是如果已经在使用link_tomail_to等功能时。


这绝对是正确的方法。由于我们从普遍的角度来看,显然需要插值。 - jibiel

2
您可以使用 :plain 过滤器,如下所示:
%p 
  :plain
    .

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接