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将如何处理它,因为它对每个元素的缩进都有点挑剔。