格式化的人口稠密的文本股票,马车回报,新线和HAML
-
28-09-2019 - |
题
当我使用 r n(马车返回-Newline)填充文本文本时,文本的格式不正确[update: r n是填写文本方面时生成的内容,我只是从数据库中拉出什么以前填写。还要注意,在生产环境中,我似乎没有这个问题。例如,更新]例如:
%textarea
= "hello\r\nHow are you?"
这样出来:
hello
How are you?
我认为这可能与HAML有关。谁能帮我吗?注意:如果我使用 n r,则可以正常工作,但是从技术上讲,这是不正确的,并且ID必须执行一些GSUB来反转它们以进行正确的显示。
解决方案
由于HAML会自动缩进HTML源代码,因此诸如PRE和TEXTAREA之类的空间敏感标签的内容可能会被拧紧。解决方案是用HTML Newline实体替换这些标签内部的新线 

, ,Haml使用 Haml::Helpers#preserve
和 Haml::Helpers#find_and_preserve
帮助者。
通常,当您使用需要它的标签时,HAML会自动为您执行此操作(可以使用该标签进行自定义 :preserve
选项)。例如,
%p
%textarea= "Foo\nBar"
将被编译为
<p>
<textarea>
Foo
Bar</textarea>
</p>
但是,如果助手正在生成标签,则HAML无法检测到这一点,因此您必须致电 Haml::Helpers#find_and_preserve
你自己。您也可以使用 ~
, ,与 =
除了它自动运行 find_and_preserve
在其输入中。例如:
%p= find_and_preserve "<textarea>Foo\nBar</textarea>"
是相同的
%p~ "<textarea>Foo\nBar</textarea>"
和渲染
<p><textarea>Foo
Bar</textarea></p>
来源: 这个Haml常见问题解答.
其他提示
继续使用 @nex3的答案,如果您想在文本方面执行一些多行内容,请尝试以下尝试:
%textarea#textarea_id{:name => 'area_name'}
:preserve
Line1
Line2
Line3
Line4
Line5
更改
%textarea
= "hello\r\nHow are you?"
到
%textarea "hello\r\nHow are you?"
一条线似乎已经解决了问题。我想这意味着这是一个HAML问题。
不隶属于 StackOverflow