ruby-on-rails – 如何验证Markdown?

可以使用无效语法编写 Markdown内容.无效意味着 BlueCloth库无法解析内容并引发异常. Rails中的markdown帮助程序不会捕获任何BlueCloth异常,因此完整页面无法呈现(而是呈现500 Server Error页面).

在我的例子中,允许用户编写Markdown内容并将其保存到数据库中.如果某人使用了无效语法,则该内容的所有连续呈现尝试都将失败(状态码500 – 内部服务器错误).

你是如何解决这个问题的?在保存到数据库之前,是否可以在模型级验证Markdown语法?

解决方法

您应该编写自己的验证方法,在其中初始化BlueCloth对象,并尝试调用to_html方法捕获任何异常.如果你遇到异常,验证失败,否则它应该没问题.

在你的模型中:

protected:

def validate
  bc = BlueCloth.new(your_markdown_string_attribute)
  begin
    bc.to_html
  rescue
    errors.add(:your_markdown_string_attribute,'has invalid markdown Syntax')
  end
end

相关文章

以下代码导致我的问题: class Foo def initialize(n=0) @n = n end attr_accessor :n d...
这是我的spec文件,当为上下文添加测试“而不是可单独更新用户余额”时,我得到以下错误. require 's...
我有一个拦截器:DevelopmentMailInterceptor和一个启动拦截器的inititializer setup_mail.rb. 但我想将...
例如,如果我有YAML文件 en: questions: new: 'New Question' other: recent: ...
我听说在RSpec中避免它,let,let !,指定,之前和主题是最佳做法. 关于让,让!之前,如果不使用这些,我该如...
我在Rails中使用MongoDB和mongo_mapper gem,项目足够大.有什么办法可以将数据从Mongoid迁移到 Postgres...