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
h
método de ayuda:fuente
h
es un alias parahtml_escape
Consulte 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
require
en Rails.fuente
CGI.escapeHTML
debajoUna 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
CGI
hoy 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].thtitle
en el método de confirmación, el Javascript se rompería:Nota:
:html
Rails escapa mágicamente de la declaración del título.fuente