gpt4 book ai didi

ruby-on-rails - Rails HTML sanitizer (Loofah) 在元素之间添加不需要的换行符

转载 作者:行者123 更新时间:2023-12-02 17:31:28 25 4
gpt4 key购买 nike

Rails 的内置 HTML 清理器(使用 gem Loofah )在 <ul> 之间添加换行符和 <li>标签。我想用 white-space: pre-wrap; 显示经过清理的内容因为它来自 WYSIWYG 编辑器,但额外的换行符使输出看起来不对。所需在顶部,实际在底部,背景颜色已添加到 ul强调:

Desired versus actual output of html sanitizing

这是我通过 sanitize 运行一些代码时发生的情况在 Rails 控制台中:

2.2.2 :033 > input = "<ul><li>a</li><li>b</li></ul>"
=> "<ul><li>a</li><li>b</li></ul>"
2.2.2 :034 > WhiteListSanitizer.new.sanitize(input)
=> "<ul>\n<li>a</li>\n<li>b</li>\n</ul>"

如果我制作一个 Loofah 对象并将其转换为 html 而不进行擦洗,它仍然会添加换行符。

2.2.2 :035 > Loofah.fragment(input).to_html
=> "<ul>\n<li>a</li>\n<li>b</li>\n</ul>"

如何让它不留空白?

如果绝对必要,我可以用正则表达式删除换行符,但没有禁用此行为的选项似乎很奇怪。

最佳答案

您需要排除 FORMAT option来自 DEFAULT_HTML选项(都属于 Nokogiri):

input = "<ul><li>a</li><li>b</li></ul>"
disable_formatting = Nokogiri::XML::Node::SaveOptions::DEFAULT_HTML ^ Nokogiri::XML::Node::SaveOptions::FORMAT
Loofah.fragment(input).to_html(save_with: disable_formatting)
# => "<ul><li>a</li><li>b</li></ul>"

关于ruby-on-rails - Rails HTML sanitizer (Loofah) 在元素之间添加不需要的换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32639316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com