问题描述
|
假设我有一段文本如下:
First line\\nSecond line\\nThird line
我想采用此文本并将其显示在HAML中(使用jQuery模板),如下所示:
%li ${TEXT}
不幸的是,我还没有找到使这些换行符实际显示为换行符的好方法。当按原样显示时,它们最终将被格式化(在实际的网页上),如下所示:
First line Second line Third line
使用JavaScript执行标准replace(/\\n/g,\"<br />\")
时,格式化结果(HAML后)变为:
First line<br />Second line<br />Third line
换句话说,文字字符串“ 5”实际上显示给用户。
我敢肯定有一个简单的解决方案可以解决这个问题。我只是找不到很快。
解决方法
对于jQuery模板,您应该使用{{html TEXT}},而不是TEXT属性包含html的$ {TEXT}。这将防止jQuery模板引擎在将string.replace(/ \\ n / g,\“ \”)插入模板之前对其进行html编码。
,像这样吗
- lines = text.split(\"\\n\")
- unless lines.empty?
%ul
- lines.each do |line|
%li= line
- unless lines.last == line
%br
毫无疑问,它可以改进。
,您必须通过将转义符(\\\\n
)加倍来逃脱\\n
replace(/\\n/g,\"\\\\n\")
,此答案的改进形式:
- text = \"Hello \\nWorld\"
%p= find_and_preserve text.split(\"\\n\").join(\'<br>\')
(尽管问题似乎更多地是关于$.text
vsS.html
,如此处所述。)