95 votes

rails : comment encoder/échapper une chaîne en html ? existe-t-il un intégré ?

Yay, c'est l'heure des questions idiotes.

J'ai donc une chaîne non fiable que je veux simplement afficher comme texte dans une page html. Tout ce que j'ai besoin de faire est d'échapper les caractères ' < et & ' en tant qu'entités html.

Moins il y a d'histoires, mieux c'est. J'utilise utf8 et je n'ai pas besoin d'autres entités puantes pour les lettres accentuées et ainsi de suite.

Y a-t-il quelque chose d'intégré dans ruby ou rails, ou dois-je créer le mien ?

138voto

Découvrez le Ruby CGI classe. Il existe des méthodes pour coder et décoder le HTML ainsi que les URLs.

CGI::escapeHTML('Usage: foo "bar" <baz>')
# => "Usage: foo &quot;bar&quot; &lt;baz&gt;"

92voto

Trevor Bramble Points 1920

Le site h méthode d'aide !

<%=h "<p> will be preserved" %>

77voto

RSK Points 6428

Dans Ruby on Rails 3

html seront échappés par défaut.

pour les chaînes non échappatoires, utilisez

<%= raw "<p>hello world!</p>" %>

25voto

Viktor Trón Points 4119

ERB::Util.html_escape

peut être utilisé de n'importe où. disponible sans exiger de rails.

14voto

Brian R. Bondy Points 141769

Vous pouvez utiliser soit h() o html_escape() mais la plupart des gens utilisent h() par convention. h() est le diminutif de html_escape() dans les rails.

Dans votre contrôleur :

@stuff = "<b>Hello World!</b>"

A votre avis :

<%=h @stuff %>

Si vous visualisez la source HTML, vous verrez la sortie sans mettre les données en caractères gras. C'est-à-dire qu'il est codé comme &lt;b&gt;Hello World!&lt;/b&gt; .

Il apparaîtra et sera affiché comme <b>Hello World!</b>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X