网址应该如何存储在记录中?

时间:2012-12-29 21:35:12

标签: ruby-on-rails ruby-on-rails-3 gem

我有一个问题。

我有评论模型,其中有正文栏,用户可以在那里输入任何内容 很明显,用户可能会输入到其他网站的网址链接 在我的猜测中,我认为它应该替换为<保存时的href> 标记 是否有任何好的宝石或其他东西来处理这类事情?

2 个答案:

答案 0 :(得分:4)

如果您不想使用完整的降价解析器(Redcarpet),请使用Rinku。它非常快且安全。不要使用任何基于正则表达式的解决方案,因为您很可能会面临安全风险。

text = "Hello! Check this out: https://github.com/vmg/rinku"
Rinku.auto_link(text, mode=:all, link_attr=nil, skip_tags=nil)

产地:

=> "Hello! Check this out: <a href=\"https://github.com/vmg/rinku\">https://github.com/vmg/rinku</a>"

答案 1 :(得分:1)

保留后代的缘故,但我觉得重要的是要注意这不是解决问题的安全方法。除非您想了解自己的所有安全隐患,否则请不要遵循此建议。 JiříPospíšil的答案更好。 = d

你真的不需要宝石来做那件事(我个人试图避免宝石这么简单)。为您的目的编写一个相当可靠的正则表达式,然后使用类似

的内容

input.gsub(regex, '<a href="\1">some text</a>')

将链接转换为他们的html等价物。请注意,您需要使用raw来显示此结果,否则rails将为您转义输出。这也意味着用户可以将其他任意标记放入其中,除非您在进入数据库时​​将其转义。确保你这样做。

或者,您可以执行与显示相同的操作,只需要稍微不同的注意事项/步骤。