Jquery 如何使用HAML格式化包含换行符的文本块?

Jquery 如何使用HAML格式化包含换行符的文本块?,jquery,html,newline,haml,line-breaks,Jquery,Html,Newline,Haml,Line Breaks,假设我有一个文本块,如下所示: First line\nSecond line\nThird line %li ${TEXT} First line Second line Third line 我希望获取此文本并(使用jQuery模板)在HAML中显示它,如下所示: First line\nSecond line\nThird line %li ${TEXT} First line Second line Third line 不幸的是,我还没有找到任何好方法让这些换行符实际显示为

假设我有一个文本块,如下所示:

First line\nSecond line\nThird line
%li ${TEXT}
First line Second line Third line
我希望获取此文本并(使用jQuery模板)在HAML中显示它,如下所示:

First line\nSecond line\nThird line
%li ${TEXT}
First line Second line Third line
不幸的是,我还没有找到任何好方法让这些换行符实际显示为换行符。按原样显示时,它们的格式(在实际网页上)如下所示:

First line\nSecond line\nThird line
%li ${TEXT}
First line Second line Third line
在JavaScript中执行标准的
replace(/\n/g,“
”)时,格式化结果(post HAML)将变为:

第一行
第二行
第三行
换句话说,文本字符串

实际显示给用户


我相信这个问题有一个简单的解决办法;我只是没有很快找到它。

您必须通过加倍转义(
\\n
)来转义
\n

像这样的

- lines = text.split("\n")
- unless lines.empty?
  %ul
    - lines.each do |line|
      %li= line
      - unless lines.last == line
        %br

毫无疑问,它是可以改进的。

对于jQuery模板,您应该使用{{html TEXT},而不是${TEXT},因为TEXT属性包含html。这将阻止jQuery模板引擎对字符串进行html编码。在将字符串插入模板之前,请先替换(/\n/g,“
”)。

以下内容的改进形式:

-text=“你好\n世界”
%p=查找并保存文本。拆分(“\n”)。连接(“
”)

(尽管问题似乎更多地是关于
$.text
S.html
,如上所述。)

如果我不清楚,很抱歉;我想让用户看到的格式化输出实际上有换行符,而不仅仅是空格,不是转义序列“\n”,也不是字符串“

”。因此,基本上我希望HAML为我插入实际的

元素,或者允许我在传递给它的文本中插入

元素。这有意义吗?(我尝试了这个答案,结果是用户实际看到了“\n”。)在haml视图中,使用
%br/
休息一下,如果您想输出
,您可能需要使用一些内联ruby(或使用助手)要将数据中的
\n
替换为
%br
当然,我不知道HAML将如何处理它,因为它对每个元素的缩进都有点挑剔。