Ich habe kürzlich versucht, meine Ansichten zu aktualisieren und den Vanilla-Stern "*" zu ersetzen, der einen Stern mit dem schwarzen Unicode-Stern darstellen sollte. " ★ "(U + 2605," & # x2605 ";" & # 9733 "; 0xE2 0x98 0x85 (e29885)). Alles schien gut zu funktionieren, als ich das Zeichen in einer Zeichenfolge in den entsprechenden Ansichten hinzufügte. Eine dieser Ansichten ist unten gezeigt.Unicode-Zeichen in der Rails-Ansicht, die dazu führt, dass edelstein rack-google-analytics fehlschlägt
_recent_updates.html.haml
%table.tablesorter#home
%thead
%tr#header
%th#year Year
%th#name Player Name
%th#position Position
%th#school School
%th#stars Stars
%tbody
- @recent_commits.each do |rc|
%tr{:class => cycle("odd", "even")}
%td#class= rc.player.year
%td#name= link_to display_name(rc.player), player_path(rc.player.slug)
%td#position= Position.find(rc.player.position_id).abbr if rc.player.position_id
%td#school= link_to rc.school.name, school_path(rc.school.slug)
%td#stars= "#{display_star(rc.player.vc_star_rating)}★"
Ich veröffentlichte das Update und ging mit meinem Geschäft. Ein paar Tage später überprüfte ich Google Analytics, um zu sehen, wie Traffic auf die Website geleitet wurde, und ich bemerkte einen steilen Rückgang auf fast Null. Ich habe etwas überprüft, da ich wusste, dass während dieser Zeit sehr viel Traffic auf die Seite kam und dass etwas mit meinem Google Analytics-Code nicht stimmte. Als ich mir den Quellcode für die Seite in der Produktion angeschaut habe, habe ich Folgendes gesehen.
<--! ...My Page Contents -->
<script type="text/javascript">
if (typeof gaJsHost == 'undefined') {
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
}
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-XXXXXXXX-1");
pageTracker._trackPageview();
} catch(err) {}</scr
Es scheint, dass das von den Unicode-Zeichen verbrauchen zusätzliche Bytes für nachgewiesenes war, so dass sie effektiv die Unterseite meiner Seite aßen, so dass es abrupt zu beenden. Was ich gesehen haben sollte war, dass das Skript-Tag beendet wurde, genauso wie das Ende des Body- und HTML-Tags.
<--! ... My Page Contents -->
<script type="text/javascript">
if (typeof gaJsHost == 'undefined') {
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
}
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-XXXXXXXX-1");
pageTracker._trackPageview();
} catch(err) {}</script>
</body>
</html>
ich auf die vorherige Änderung von git zurückgekehrt (der Ersatz von Sternchen mit Sternen war die einzige Änderung in dem betreffenden Festschreibung), und mein Google Analytics-Tracking-Code funktioniert wieder in Ordnung, und mein Skript, Körper und html Tags haben alle ihre richtigen schließenden Tags.
Meine Frage ist zweifach.
- Wie füge ich das Sternzeichen zurück in meine Ansicht, ohne das Ende meines Codes aufzufressen?
- Ich dachte UTF-8 wurde in Rails 3.1 out of the box unterstützt, warum passiert das?
Leider keiner von ihnen hat dazu beigetragen. –