【发布时间】:2014-01-04 05:24:16
【问题描述】:
我有一些想要呈现的用户提供的内容。
显然内容应该被转义,rails 默认会这样做。但是我也想解析文本,以便将 url 显示为链接。
有一个 auto_link 助手可以做到这一点。但是,无论我按什么顺序执行此操作,都无法获得所需的结果。
取内容:
content
=> "<img src=\"foo\" />\\r\\n\\r\\nhttp://google.com"
如果这个被转义了,因为url中的斜杠被转义了,auto_link就不起作用了:
Rack::Utils.escape_html(content)
=> "<img src="foo" />\\r\\n\\r\\nhttp://google.com"
如果我首先使用 auto_link,显然链接会被转义。此外, auto_link 会去除不需要的内容而不是转义。如果输入中存在脚本标记,我希望它转义而不是删除。
auto_link(content)
=> "<img src=\"foo\" />\\r\\n\\r\\n<a href=\"http://google.com\">http://google.com</a>"
知道如何获得所需的输出吗?
感谢您的帮助。
【问题讨论】:
-
如何将内容保存到数据库?在保存内容之前,您是否正在做一些事情来逃避内容?您是否可以选择清理内容并保存为纯 html?
-
这只是数据库中的一个文本字段。在保存之前不要转义,因为将来可能会使用其他非 html 视图。即使我可以在保存而不是渲染时逃脱,我也必须解决与上述相同的问题。
标签: html ruby-on-rails ruby-on-rails-3 actionview html-escape-characters