Tengo comentarios generados por el usuario en mi sitio. Si un usuario agrega una URL en su comentario, me gustaría que se formatee como un enlace y realmente se enlace a esa URL. ¿Cómo puedo hacer eso?En una vista de Rails 3, ¿cómo detecto una URL en una cadena de visualización y la formato como un enlace a esa URL?
Respuesta
Rails tiene un auto_link ayudante de texto.
auto_link("Go to http://www.rubyonrails.org and say hello to [email protected]")
# => "Go to <a href=\"http://www.rubyonrails.org\">http://www.rubyonrails.org</a> and
# say hello to <a href=\"mailto:[email protected]\">[email protected]</a>"
auto_link("Visit http://www.loudthinking.com/ or e-mail [email protected]", :link => :urls)
# => "Visit <a href=\"http://www.loudthinking.com/\">http://www.loudthinking.com/</a>
# or e-mail [email protected]"
En primer lugar, debe definir una expresión regular que coinciden con cadenas http, por ejemplo
IPv4_PART = /\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]/ # 0-255 REGEXP = %r{ https?:// # http:// or https:// ([^\s:@]+:[^\s:@]*@)? # optional username:[email protected] ((([^\W_]+\.)*xn--)?[^\W_]+([-.][^\W_]+)*\.[a-z]{2,6}\.? | # domain (including Punycode/IDN)... #{IPv4_PART}(\.#{IPv4_PART}){3}) # or IPv4 (:\d{1,5})? # optional port ([/?]\S*)? }iux
continuación, supongamos que el cuerpo comentario es str, que hace:
str.gsub(REGEXP) do |m| link_to m, m end
rodar su propia matcher URL es una muy mala idea - que va ** ** cometer un error. Usa una biblioteca. :) –
Usted podría también utilizar el "auto_html "gema, vea https://github.com/dejan/auto_html.
Descargo de responsabilidad: Aún no lo he usado, pero parece que podría hacer lo que quiera.
Hace más de lo que preguntaba, lo cual es interesante, pero requiere una nueva joya. El auto_link es más simple. –
También me gustaría recomendar a pensar en algo así como Markdown por sus comentarios. Entonces puede dejar que el motor de Markdown se preocupe por cosas como esta para usted.
en Rails 3.1 auto_link tiene ben retirado, es ahora una joya independiente: https://github.com/tenderlove/rails_autolink
- 1. ¿Cómo puedo escapar una URL de una cadena en Rails?
- 2. PHP - Agregar enlace a una URL en una cadena
- 3. ¿Cómo agregar un enlace Url táctil a una url en el mensaje de UIAlertView?
- 4. Cómo configurar texto en una UITextView como un enlace a una URL
- 5. ¿Cómo detecto "_" en una cadena de C++?
- 6. Cifrado de una cadena a una URL en C#
- 7. ¿Cómo extraes una URL de una cadena usando Python?
- 8. Cómo agregar drawables a una vista mediante programación desde una URL pero no en formato xml
- 9. Cómo crear una URL en un controlador como HtmlHelper
- 10. Escapar y en una URL
- 11. Obtiene una URL de una cadena
- 12. Aplicar URL relativa a una URL absoluta
- 13. Cómo agregar una cadena URL en un objeto JSON
- 14. Descargar archivo de URL a una cadena
- 15. Crear URL a partir de una cadena
- 16. ¿Cómo crear una vista previa de url en JavaScript?
- 17. ¿Cómo eliminar la barra diagonal de una URL en una aplicación de Rails? (en una vista de SEO)
- 18. ¿Cómo se analiza una url de una cadena en Android?
- 19. ¿Cómo convierto una URL relativa en una URL completa?
- 20. Django: una vista, varias URL?
- 21. Buscar url de una cadena con php
- 22. cómo adjuntar el enlace de URL a una imagen?
- 23. RedirectResult + Object como parámetro en una URL
- 24. La visualización de una imagen cargada en MVC 3 Razor
- 25. ASP.NET MVC 3 Razor: ¿Cómo obtener URL de acción en una variable de cadena de Javascript?
- 26. ¿Cómo puedo implementar URL vanity en una aplicación de Rails?
- 27. ¿Cómo pasar una url como un parámetro url cuando hay un signo de interrogación en él?
- 28. compruebe si una cadena es una URL
- 29. Dada una URL como una cadena, ¿cómo extraer solo el dominio y la extensión?
- 30. ¿Cómo especifico una URL de retorno para un enlace al formulario de inicio de sesión?
Nunca he oído hablar de eso. ¡Estupendo! – fl00r
Si está utilizando Rails 3.1+, utilice rails_autolink según nikstep – Dean
No se puede encontrar auto_link en el enlace que proporcionó. Documentación alternativa: http://apidock.com/rails/ActionView/Helpers/TextHelper/auto_link –