问题是,行末尾的|
(由空格分隔)被识别为高级换行符的语法。如果你想把这个角色作为输出怎么办?
假设您要创建一个类似
的菜单Section 1 | Section 2 | ...
注意:如果这正是您想要的,请查看 concatenate link_to with pipe。
是否显示链接取决于某种条件。在HAML / Ruby on Rails中,这看起来像不工作
%div.menu
-if condition1?
#{link_to 'Section 1', section_1_path} |
-if condition2?
#{link_to 'Section 2', section_2_path} |
-if condition3?
...
作为一种(某种程度上是肮脏的)解决方法,我更改了代码:
%div.menu
-if condition1?
#{link_to 'Section 1', section_1_path} #{'|'}
-if condition2?
#{link_to 'Section 2', section_2_path} #{'|'}
-if condition3?
...
答案 0 :(得分:9)
无需转义,只需要与您想要分离的元素相同的缩进。
%div.menu
-if condition1?
#{link_to 'Section 1', section_1_path}
|
-if condition2?
#{link_to 'Section 2', section_2_path}
|
-if condition3?
...
你可以在浏览器中试试这个: online haml editor: rendera 要么 html2haml
答案 1 :(得分:3)
Haml解析器查找|
字符前面有空格以表示多行块。您可以使用此方法通过在Haml中使用HTML字符引用而不是普通空间来创建变通方法:
%div.menu
-if condition1?
#{link_to 'Section 1', section_1_path} |
-if condition2?
#{link_to 'Section 2', section_2_path} |
-if condition3?
...
这样Haml就不会看到空格,所以将管道视为文字,但空间将出现在浏览器中。
您是否更喜欢这种解决方法可能是一种品味问题。在这种特殊情况下,我认为基于CSS的解决方案会更好,但这取决于您需要支持哪些浏览器。
答案 2 :(得分:1)
菜单应该是一个列表,所以将它作为无序列表并在CSS中:
.menu ul li:after {
content: '|';
}
答案 3 :(得分:0)
我认为你需要逃避这个角色。试试“\ |”。