Rails: html_escape nicht funktioniert
-
18-09-2019 - |
Frage
Aus irgendeinem Grunde html Entkommen ist nicht in meiner Rails-Anwendung arbeiten. Auch wenn ich schreibe so etwas wie
<%=h '©äö' %>
es ist nicht eines der Zeichen in HTML-Entitäten zu konvertieren.
Ich habe keine Ahnung, was das sein könnte. Es funktionierte immer gut und jetzt einfach nicht plötzlich tun.
Irgendwelche Ideen?
Lösung
Google Sitemap erfordert völlig entgangen URLs , so in diesem Fall müssen Sie alle Sonderzeichen und internationale Zeichen entkommen.
Das htmlentities Bibliothek für Sie tut das.
Ich schrieb sogar ein wenig Wrapper im application_helper.rb
:
def html_entity_escape(s)
require 'htmlentities'
@html_coder ||= HTMLEntities.new
@html_coder.encode(s)
end
Andere Tipps
ö
und ä
sind gültige Zeichen in HTML. Es gibt keine Notwendigkeit, sie zu entkommen, auch wenn es HTML-Entitäten für sie. Diese Einheiten sind die Bequemlichkeit, nicht notwendig - solange die deklarierte Codierung (HTTP-Header) und die tatsächlichen Zeichencodierung Streichhölzer, gibt es kein Problem, wenn sie buchstäblich auftritt
Die einzigen Zeichen, die immer maskiert werden müssen, sind <
, >
, &
und "
, wie in XML.
Ich würde sagen, dass h nur die Sonderzeichen HTML ersetzt <,>, & und "Weitere Informationen finden sie auf der Dokumentation von Rails der ERB :: Util.html_escape , die hinter der h-Funktion ist.