当我使用\r\n(回车 - 换行符)用文本填充文本区域时,文本格式不正确 [更新:\r\n 是填写文本区域时生成的内容,我只是从数据库中提取了什么是之前填写过。另外要注意,在生产环境中我似乎没有这个问题。 END UPDATE] 例如:
%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
helper 。
通常,当您使用需要它的标签时,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>
来源:this Haml FAQ .
关于ruby-on-rails - 格式化填充的 textarea、回车、换行和 HAML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3071935/