Estoy trabajando con Ruby on Rails, ¿Hay alguna manera de eliminar html
de una cadena usando sanitize o método igual y mantener solo el texto dentro del atributo de valor en la etiqueta de entrada?Strip html from string Ruby on Rails
Respuesta
Hay un método strip_tags
en ActionView::Helpers::SanitizeHelper
:
http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html#method-i-strip_tags
Editar: para conseguir el texto dentro del atributo de valor, usted podría utilizar algo como Nokogiri con una expresión XPath para conseguir que fuera de la cadena.
Si queremos utilizar esto en el modelo
ActionView::Base.full_sanitizer.sanitize(html_string)
que es el código en "strip_tags" método
esto funciona, pero refiriéndose a ActionView del mdoel es incómoda. Más limpiamente puede 'requerir 'html/sanitizer'' y crear su propio sanitizador con' HTML :: FullSanitizer.new'. –
@nhaldimann, 'require 'html/sanitizer'' provoca error, así que tengo que usar:' Rails :: Html :: FullSanitizer.new' (http://edgeapi.rubyonrails.org/classes/HTML/FullSanitizer.html# method-i-sanitize) –
Sí, llamar a esto: sanitize(html_string, :tags=>[])
ActionView::Base.full_sanitizer.sanitize(html_string)
lista blanca de etiquetas y los atributos se pueden especificar como abajo
ActionView::Base.full_sanitizer.sanitize(html_string, :tags => %w(img br p), :attributes => %w(src style))
La instrucción anterior permite etiquetas: img, br yp y atributos: src y estilo.
¿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
También hay 'Rails :: Html :: FullSanitizer.new' si no desea especificar una lista blanca. – Fredrik
he utilizado la biblioteca de lufa, ya que es adecuado tanto para HTML y XML (ambos documentos y fragmentos de cuerda). Es el motor detrás de la gema desinfectante html. Simplemente estoy pegando el ejemplo del código para mostrar lo simple que es usarlo.
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 "
- 1. Strip HTML from string en SSRS 2005 (VB.NET)
- 2. Strip hashtags from string using JavaScript
- 3. No escapes html en ruby on rails
- 4. Ruby on Rails enviar
- 5. String strip() para JavaScript?
- 6. Ruby vs. Ruby on Rails
- 7. Ruby on rails connection problem
- 8. Ruby on Rails Switch
- 9. Docsplit Ruby on Rails
- 10. Ruby on Rails: descargable
- 11. Ruby on Rails will_paginate
- 12. Cómo dominar Ruby on Rails
- 13. Ruby on Rails. Rutas Unicode
- 14. Ruby on Rails: Hello World
- 15. Conversión de HTML a content_tag en Ruby on Rails
- 16. crear ayudantes html personalizados en ruby on rails
- 17. HTML 5 Ruby on Rails Eventos del lado del servidor
- 18. Intellisense para Ruby, Ruby on Rails, Python
- 19. Perfilando una aplicación ruby / ruby on rails
- 20. Antipatterns con Ruby on Rails
- 21. Ruby on rails y Node.js
- 22. Ruby on rails application root
- 23. Ruby on Rails: formulario select
- 24. Ruby on Rails ActiveRecord: pluralization
- 25. Ruby on Rails asociación polimórfica
- 26. Usos de Ruby on Rails
- 27. link_to con Ruby on Rails
- 28. Ruby on Rails API Tutorial
- 29. Ruby on Rails en IIS?
- 30. mejor ruby on rails cms
No esterilice o igual pero 'text.strip' funciona – Keon