2009-06-17 5 views
3

Ich bin ein seltsames Problem mit dem ein Benutzer dem folgenden TextDie Zeichenfolge "Test '<3'" angezeigt als "Test" <3>" in meiner Rails app

-Test eingeben '< 3'

und gibt sie als

Test '< 3>

Am Ausgang white_list ich verwende, und die in der Datenbank gespeicherten Wert ist:

‚Prüfung‚‘< 3‘ ‚‘

Was die Ausgabe, die es zu denken, verursachen könnte ein Etikett von einer Art und versuchen, es zu schließen (so sieht es für mich aus).

Danke!

Antwort

2

Sonderzeichen in Ruby wie &, < und @ können manchmal falsch interpretiert werden. Verwenden Sie die "h" -Methode in .rhtml-Seiten.

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

Will Ausgang:

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

Also Ihr Browser es als interpretiert:

Dies ist ein kurzer Test‘< 3' .

(Ich bin noch relativ neu Ruby so bin ich auf die Korrektur offen!)

+0

Was bedeutet 'H' tun? –

+1

'h' ist ein Alias ​​für die Methode' html_escape': http://api.rubyonrails.org/classes/ERB/Util.html#M000337 – Pesto

+0

Ich habe versucht, mit h zu entkommen, aber ich war auf der falschen Seite , Doh! Der Austausch von white_list string zu h string hat funktioniert. Danke, dass du mich auf den Zehen hältst. – mwilliams