mah*_*off 6 html ruby ruby-on-rails sanitize ruby-on-rails-3.1
sanitize()在ApplicationHelper不关闭标签.
s = "<a href='http://example.com'>incomplete"
sanitize(s, :tags => ['a', 'p'])
Run Code Online (Sandbox Code Playgroud)
上面的代码片段保留了字符串.我怎么能强迫它附加一个关闭</a>或至少剥离<a>完全?
您可以使用正确的HTML解析器来执行此操作.我推荐Nokogiri来完成这项工作:
require 'nokogiri'
# ...
s = "<a href='http://example.com'>incomplete"
Nokogiri::HTML::fragment(sanitize(s, :tags => ['a', 'p'])).to_xml
# => "<a href=\"http://example.com\">incomplete</a>"
Run Code Online (Sandbox Code Playgroud)
这将始终返回有效的XML.当然,您可以将其打包到您自己的帮助方法中,以便于使用.
更新后的答案是
s = "<a href='http://example.com'>incomplete"
html = sanitize(s, tags: %w[a p])
Nokogiri::HTML::DocumentFragment.parse(html).to_html
Run Code Online (Sandbox Code Playgroud)