html - Ruby gem 快速验证部分 HTML 片段?

标签 html ruby-on-rails ruby

我正在 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/

相关文章:

html - d3.js 设置属性为百分比而不是像素

ruby-on-rails - Newrelic开发人员模式不适用于ruby-prof

ruby-on-rails - Heroku 数据库 :pull 'db:pull is not a heroku command'

ruby - 用于匹配具有重复模式的字符串的正则表达式

ruby-on-rails - Rails "try"常量

ruby-on-rails - Rails Fixtures 没有加载 rspec

jquery - 如何在 jQuery 中追加 sibling ?

html - 用行填充 <UL> 缩进

html - 针对搜索引擎优化网站

jquery - rails 4-jQuery : add/remove class only works in certain cases