Tengo una cadena que no es de confianza que quiero mostrar como texto en una página HTML. Necesito escapar de los caracteres <"y &" como entidades HTML. Cuanto menos alboroto, mejor.
Estoy usando UTF8 y no necesito otras entidades para letras acentuadas.
¿Hay una función incorporada en Ruby o Rails, o debería usar la mía propia?

&<>"'/Respuestas:
El
hmétodo de ayuda:fuente
hes un alias parahtml_escapeConsulte la clase Ruby CGI . Existen métodos para codificar y decodificar HTML y URL.
fuente
En Ruby on Rails 3, HTML se escapará de forma predeterminada.
Para cadenas sin escape, utilice:
fuente
ERB :: Util.html_escape se puede utilizar en cualquier lugar. Está disponible sin usar
requireen Rails.fuente
CGI.escapeHTMLdebajoUna adición a la respuesta de Christopher Bradford para usar el escape HTML en cualquier lugar, dado que la mayoría de la gente no lo usa
CGIhoy en día, también puede usarRack:fuente
Puede usar
h()ohtml_escape(), pero la mayoría de la gente lo usah()por convención.h()es la abreviatura dehtml_escape()rieles.En tu controlador:
En tu opinión:
Si ve la fuente HTML: verá la salida sin poner los datos en negrita. Es decir, está codificado como
<b>Hello World!</b>.Aparecerá y se mostrará como
<b>Hello World!</b>fuente
Comparación de los diferentes métodos:
Escribí el mío para que sea compatible con el escape de Rails ActiveMailer:
fuente
h()también es útil para escapar de las comillas.Por ejemplo, tengo una vista que genera un enlace usando un campo de texto
result[r].thtitle. El texto puede incluir comillas simples. Si no escapararesult[r].thtitleen el método de confirmación, el Javascript se rompería:Nota:
:htmlRails escapa mágicamente de la declaración del título.fuente