当我使用 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#preserveHaml::Helpers#find_and_preserve 帮助者。

通常,当您使用需要它的标签时,HAML会自动为您执行此操作(可以使用该标签进行自定义 :preserve 选项)。例如,

%p
  %textarea= "Foo\nBar"

将被编译为

<p>
  <textarea>
Foo&#x000A;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&#x000A;Bar</textarea></p>

来源: 这个Haml常见问题解答.

其他提示

简短的答案如果 = f.text_area :foo 在每个新线上显示不需要的白色空间:

代替 =~

有关其背后原因的更详细的解释,请阅读 娜塔莉的答案关于〜的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问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top