如何验证Markdown?
可能会使用无效语法编写 Markdown 内容。 无效表示 BlueCloth 库无法解析内容并引发异常。 Rails 中的 markdown
帮助程序不会捕获任何 BlueCloth 异常,因此无法呈现完整页面(而是呈现 500 服务器错误页面)。
就我而言,用户可以编写 Markdown 内容并将其保存到数据库中。 如果有人使用无效语法,则该内容的所有连续呈现尝试都会失败(状态代码 500 - 内部服务器错误)。
您如何解决这个问题? 在保存到数据库之前是否可以在模型级别验证 Markdown 语法?
It's possible to write Markdown content with invalid syntax. Invalid means that the BlueCloth library fails to parse the content and throws an exception. The markdown
helper in Rails doesn't catch any BlueCloth exceptions and because of that the complete page fails to render (500 Server Error page is rendered instead).
In my case, users are allowed to write Markdown content and save it to the database. If someone used invalid syntax, all successive rendering attempts of that content fail (Status Code 500 - Internal Server Error).
How do you get around this issue? Is it possible to validate the Markdown syntax at the Model-level before saving to the database?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您应该编写自己的验证方法,在其中初始化 BlueCloth 对象,并尝试调用
to_html
方法捕获任何异常。 如果捕获异常,则验证失败,否则应该没问题。在你的模型中:
You should write your own validation method in which you would initialize BlueCloth object, and try to call
to_html
method catching any exception. If you catch an exception, validation fails, otherwise it should be ok.In your model:
我做了一些研究,并决定使用 RDiscount 而不是 BlueCloth。 RDiscount 似乎比 BlueCloth 更快、更可靠。
将 RDiscount 集成到您的 Rails 环境中很容易。 将以下片段包含在您的
environment.rb
中,您就可以开始使用了:(使用 Rails 2.2.0 进行测试)
I've done a bit of research and decided to use RDiscount instead of BlueCloth. RDiscount seems to be much faster and more reliable than BlueCloth.
It's easy to integrate RDiscount in your Rails environment. Include the following snipped in your
environment.rb
and you are ready to go:(tested with Rails 2.2.0)