Eu tenho uma string não confiável que quero mostrar como texto em uma página HTML. Eu preciso escapar os caracteres ' <
' e ' &
' como entidades HTML. Quanto menos barulho, melhor.
Estou usando UTF8 e não preciso de outras entidades para letras acentuadas.
Existe uma função embutida no Ruby ou Rails, ou devo lançar a minha própria?
&<>"'/
Respostas:
O
h
método auxiliar:fonte
h
um alias parahtml_escape
Verifique a classe Ruby CGI . Existem métodos para codificar e decodificar HTML, bem como URLs.
fonte
No Ruby on Rails 3, o HTML será escapado por padrão.
Para strings sem escape, use:
fonte
ERB :: Util.html_escape pode ser usado em qualquer lugar. Ele está disponível sem usar
require
no Rails.fonte
CGI.escapeHTML
embaixoAlém da resposta de Christopher Bradford para usar o escape HTML em qualquer lugar, já que a maioria das pessoas não usa
CGI
hoje em dia, você também pode usarRack
:fonte
Você pode usar
h()
ouhtml_escape()
, mas a maioria das pessoas usah()
por convenção.h()
é a abreviação dehtml_escape()
in rails.Em seu controlador:
Em sua opinião:
Se você visualizar o código-fonte HTML: verá a saída sem realmente colocar os dados em negrito. Ou seja, está codificado como
<b>Hello World!</b>
.Ele aparecerá e será exibido como
<b>Hello World!</b>
fonte
Comparação dos diferentes métodos:
Eu escrevi meu próprio para ser compatível com o escape de Rails ActiveMailer:
fonte
h()
também é útil para escapar de aspas.Por exemplo, tenho um modo de exibição que gera um link usando um campo de texto
result[r].thtitle
. O texto pode incluir aspas simples. Se eu não escaparresult[r].thtitle
no método de confirmação, o Javascript irá quebrar:Nota: a
:html
declaração do título é escapada magicamente pelo Rails.fonte