我怎样才能告诉HAML在视图的末尾留下空白?

时间:2013-11-24 20:06:37

标签: ruby-on-rails ruby haml

我的Rails项目中有一些用于向用户发送文件的HAML视图。它们不会呈现为HTML,只是下载的纯文本文件。这些文件必须匹配非常特定的格式,并且格式具有特殊性,最终要求每隔一行以制表符结束。

Line 0a\t01234
Line 0b\t
Line 1a\t12345
Line 1b\t
Line 2a\t23456
Line 2b\t

a行的标签字符打印正常,但b行没有。如果我在制表符后添加任何非空白字符,则会打印该选项卡。但是当它是该行的最后一个字符时,它不会。

我的观点看起来像

- @line_pairs.each do |line_pair|
  = line_pair.a.words + "\t" + line_pair.a.numbers
  = line_pair.b.words + "\t"

我确定标签字符不存在(我的编辑器在视觉上显示它们)。也没有空间或任何类似的东西。我得到了

Line 0a\t01234
Line 0b
Line 1a\t12345
Line 1b
Line 2a\t23456
Line 2b

有什么方法可以解决这个问题吗?谢谢你的帮助。

3 个答案:

答案 0 :(得分:3)

The haml documentation表示代字号(~)的行为与=类似,但会保留空格。

这有用吗?

- @line_pairs.each do |line_pair|
  ~ line_pair.a.words + "\t" + line_pair.a.numbers
  ~ line_pair.b.words + "\t"

答案 1 :(得分:0)

尝试:preserve

:preserve
    - @line_pairs.each do |line_pair|

答案 2 :(得分:0)

matt指出的正确解决方案实际上只是使用ERB,因为HAML并不意味着在这个详细程度上满足控制空白的需求。