Rails 3.1删除了auto_link方法。它继续存在于插件中,但它从来没有像UGC那样工作。
运行auto_link后,您必须调用html_safe以获取要呈现的链接,从而导致任何UGC HTML也按原样显示。
是否有一个库可以html_escape或清理内容并安全地链接文本?这似乎是一个常见的用例,实现起来有点痛苦,所以我认为必须有一些东西。
例如:
<<script> do bad things </script>
http://www.google.com?q=viagra&page=1
我想结束:
<script> do bad things </script>
<a href='http://www.google.com?q=viagra&page=1'>http://www.google.com?q=viagra&page=1</a>
答案 0 :(得分:0)
Redcloth(http://redcloth.org/)可能就是您想要的。它不允许你使用普通的html(顺便说一句,这不是一个好主意),但它实际上支持完整的纺织标记语言,所以它也很灵活。 redcloth纺织参考(http://redcloth.org/textile/phrase-modifiers/#links)也显示了链接的语法。基本上,您可以使用它来消毒您想要的任何字符串。我自己将它用于带有before_safe指令的博客文章,所以 它总是在保存前被调用:
class Article < ActiveRecord::Base
before_save :parse_text
def parse_text
if RedCloth.nil?
self.article_text = RedCloth.new(self.article_text).to_html
end
end
end