0

我有个问题。

我有评论模型,其中有正文列,用户可以在其中输入任何内容。
显然,用户可能会键入指向其他网站的 url 链接。
在我的猜测中,我认为它应该在保存时替换为<a href >标签。
有什么好的宝石或东西可以处理这种事情吗?

4

2 回答 2

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>"
于 2012-12-29T21:53:29.287 回答
1

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

你真的不需要宝石来做到这一点(我个人尽量避免使用宝石来做这么简单的事情)。编写一个对您的目的相当可靠的正则表达式,然后使用类似的东西

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

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

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

于 2012-12-29T21:48:59.650 回答