2009-06-17 6 views
3

Je vais avoir un problème étrange où un utilisateur peut entrer dans le texte suivantLa chaîne « Test « <3 » » affiche comme « Test" <3> » dans mes Rails app

Test « < 3 »

et sorties comme

test '< 3>

Sur la sortie J'utilise white_list et la valeur stockée dans la base de données est:

« test « » < 3 » « »

Ce qui pourrait être à l'origine de la sortie de penser qu'il est une sorte de tag et d'essayer de le fermer (ce qui est ce qu'il me semble).

Merci!

Répondre

2

Des caractères spéciaux dans Ruby tels que &, < et @ peuvent parfois être mal interprétés. Essayez d'utiliser la méthode "h" dans les pages .rhtml.

<strong><%= h("This is a quick Test'<3'.") %></strong> 

Affichera:

<strong>This is a quick Test'&lt;3'.</strong> 

Ainsi, votre navigateur interprétera comme:

Ceci est un test rapide » < 3' .

(je suis encore relativement nouveau pour Ruby, donc je suis ouvert à la correction!)

+0

Qu'est-ce que 'h' faire? –

+1

'h' est un alias pour la méthode' html_escape': http://api.rubyonrails.org/classes/ERB/Util.html#M000337 – Pesto

+0

J'essayais en fait d'y échapper avec h mais j'étais sur la mauvaise vue , c'est vrai! L'échange de la chaîne white_list en h chaîne travaillée. Merci de me garder sur mes orteils. – mwilliams

Questions connexes