Respuestas:
Hay un strip_tagsmétodo en ActionView::Helpers::SanitizeHelper:
http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html#method-i-strip_tags
Editar: para obtener el texto dentro del atributo de valor, puede usar algo como Nokogiri con una expresión Xpath para sacarlo de la cadena.
Si queremos usar esto en el modelo
ActionView::Base.full_sanitizer.sanitize(html_string)
cuál es el código del método "strip_tags"
require 'html/sanitizer'crear una instancia de su propio desinfectante HTML::FullSanitizer.new.
require 'html/sanitizer'genera un error, así que tengo que usar: Rails::Html::FullSanitizer.new( edgeapi.rubyonrails.org/classes/HTML/… )
Sí, llame a esto: sanitize(html_string, tags:[])
ActionView::Base.full_sanitizer.sanitize(html_string)
La lista blanca de etiquetas y atributos se puede especificar a continuación
ActionView::Base.full_sanitizer.sanitize(html_string, :tags => %w(img br p), :attributes => %w(src style))
La declaración anterior permite las etiquetas img , br y py los atributos src y style .
He usado la biblioteca Loofah, ya que es adecuada tanto para HTML como para XML (tanto documentos como fragmentos de cadenas). Es el motor detrás de la gema desinfectante html. Simplemente pego el ejemplo de código para mostrar lo simple que es de usar.
unsafe_html = "ohai! <div>div is safe</div> <script>but script is not</script>"
doc = Loofah.fragment(unsafe_html).scrub!(:strip)
doc.to_s # => "ohai! <div>div is safe</div> "
doc.text # => "ohai! div is safe "
¿Qué tal esto?
white_list_sanitizer = Rails::Html::WhiteListSanitizer.new
WHITELIST = ['p','b','h1','h2','h3','h4','h5','h6','li','ul','ol','small','i','u']
[Your, Models, Here].each do |klass|
klass.all.each do |ob|
klass.attribute_names.each do |attrs|
if ob.send(attrs).is_a? String
ob.send("#{attrs}=", white_list_sanitizer.sanitize(ob.send(attrs), tags: WHITELIST, attributes: %w(id style)).gsub(/<p>\s*<\/p>\r\n/im, ''))
ob.save
end
end
end
end
Rails::Html::FullSanitizer.newsi no desea especificar una lista blanca.
text.stripfunciona