我正在 Rails 中制作一个自定义的准 CMS,我们希望有一个字段可以作为代码中的 HTML 片段进行编辑(管理界面将在前端使用 CodeMirror)。当它呈现给最终用户时,它只会被 html_safe
处理并插入到一个 div 中。我们相信我们的内容编辑器没有恶意,但确保他们创建有效的 HTML 不会破坏页面会很有帮助,尤其是因为他们对编码还比较陌生!
作为第一次尝试,我使用 Hash.from_xml
并将异常拯救作为自定义验证器。但是是否有更好和/或更优化的方法(即 gem)来检查它是否是有效的 HTML?
谢谢!
最佳答案
您可以使用 Nokogiri库(和 gem )在您的模型中创建验证器。在片段上使用 Nokogiri 并不完美(因此您可能希望添加覆盖验证器的能力)但它会捕获许多可能破坏页面的明显错误。
示例(假设您的模型属性/字段称为 content
):
validate :invalid_html?
def invalid_html?
doc = Nokogiri::HTML(self.content) do |config|
config.strict
end
if doc.errors.any?
errors.add(:base, "Custom Error Message")
end
end
关于html - Ruby gem 快速验证部分 HTML 片段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24395993/