ruby-on-rails - 格式化填充的 textarea、回车、换行和 HAML

标签 ruby-on-rails textarea newline haml carriage-return

当我使用\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#preserveHaml::Helpers#find_and_preserve helper 。

通常,当您使用需要它的标签时,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>

来源:this Haml FAQ .

关于ruby-on-rails - 格式化填充的 textarea、回车、换行和 HAML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3071935/

相关文章:

ruby-on-rails - CarrierWave - 仅删除版本,而非原始版本

javascript - 如何让用户将 html 输入文本区域?如果他们尝试将 &lt;textarea&gt; 包含在文本区域内,我会遇到问题

javascript - 为什么有效文本区域的滚动宽度未定义?

javascript - 使用 JavaScript,将换行符插入 HTML textContent 属性(特定于 IE)

scala - Scala 中的换行符

ruby-on-rails - 有没有办法在 Ruby 中用尾随逗号解析 JSON?

ruby-on-rails - 如何使用 Devise 手动创建用户

ruby-on-rails - 以其他方式创建记录时,Rails 关联回调未运行

jquery - $(...parent()).html() 没有捕获文本区域内容

Windows 上的 PHP 错误日志文件格式(php.ini error_log 指令)