格式化已填充的textarea,回车符,换行符和HAML
当我使用\ r \ n(回车 - 换行符)填充文本的textarea时,文本格式不正确[更新:\ r \ n是填充时out一个textarea,我只是从数据库中提取以前填充的内容。另外要注意的是,在生产环境中,我似乎没有这个问题。结束时更新例如:格式化已填充的textarea,回车符,换行符和HAML
%textarea
= "hello\r\nHow are you?"
出来是这样的:
hello
How are you?
我想这可能是与HAML。谁能帮我吗? 注意:如果我使用\ n \ r它工作正常,但这在技术上是不正确的,并且id必须做一些gsubs来将它们反转为适当的显示。
因为Haml会自动缩进HTML源代码,所以像pre和textarea这样的空白敏感标签的内容可能会被搞砸。解决方案是用HTML换行符实体

替换这些标签中的换行符,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
Bar</textarea></p>
来源:this Haml FAQ。
男士谢谢,我很喜欢wtf:p – 2011-10-05 16:46:26
开始gsubing lol – 2011-10-05 16:46:48
nex3,非常感谢! (我可以拥抱你吗?):D。 '.gsub(“\ n”,'&#x000A;')。html_safe' – lokson 2015-04-14 10:35:14
更改
%textarea
= "hello\r\nHow are you?"
到
%textarea "hello\r\nHow are you?"
都在同一行似乎已经解决了这个问题。我想这意味着这是一个HAML问题。
继续与@ NEX3的答案,如果你想要做一个textarea里面的一些多行内容,尝试这样的:
%textarea#textarea_id{:name => 'area_name'}
:preserve
Line1
Line2
Line3
Line4
Line5
简短的回答,如果在每一个换行符= f.text_area :foo
显示器不需要的空白:
与~
更换=
对于其背后的原因更详细的解释,阅读Natalie's answer和HAML docs about ~。
textarea标签内是否有空格/回车符?例如。 ''。 – bernie 2010-06-18 17:51:31
是的,当我查看源代码时,第一部分和第二部分之间有一堆空间。 – Mike 2010-06-18 17:56:23
通常在字符串中,你只需使用'“\ n”'换行符。这不正常吗? – nathanvda 2010-06-18 20:11:43