Laden Sie jQuery durch Google API in Rails HAML?
-
20-09-2019 - |
Frage
Das fühlt sich an wie es sollte ziemlich einfach sein, aber es scheint nicht viel Belastung zu sein.
Ich habe in meinem app/views/layouts/application.html.haml
:
= javascript_include_tag 'http://www.google.com/jsapi'
%script{ :type => "text/javascript", :charset => "utf-8" }
//<![CDATA[
google.load("jquery", "1.3.2");
google.load("jqueryui", "1.7.2");
//]]>
= javascript_include_tag 'application'
... wo meine application.js
Datei enthält einige gute ‚ole jQuery. Ich habe jRails und meine jQuery funktioniert gut mit lokalen Kopien der Bibliotheken, aber ich möchte das verwenden diejenigen von Goolge API.
Hier ist, was mein Browser erzeugt:
<script src="http://www.google.com/jsapi.js" type="text/javascript"></script>
<script charset='utf-8' type='text/javascript'>
<!-- /<![CDATA[ -->
google.load("jquery", "1.3.2");
google.load("jqueryui", "1.7.2");
<!-- /]]> -->
</script>
<script src="/javascripts/application.js?1255040651" type="text/javascript"></script>
Ich bin mit Safari und der Fehler-Konsole, die die folgenden Fehler meldet:
ReferenceError: Can't find variable: google
ReferenceError: Can't find variable: $
Entsprechend keiner meiner jQuery-Skripte arbeiten.
Hilfe?
Lösung
javascript_include_tag
setzt automatisch einen Js am Ende. Es scheint, diese Runde keine Möglichkeit zu sein, während javascript_include_tag
verwenden. Sie sollen (wie pro Ihren eigenen Kommentare) Ihren eigenen Script-Tag erstellen:
%script{ :src => 'google.com/jsapi', :type => 'text/javascript', :charset => 'utf-8' }
Persönlich ziehe ich den JSAPI zu überspringen, und die Bibliotheken direkt verweisen, so einfach:
= javascript_include_tag 'http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js'
Andere Tipps
Als Nebenbemerkung über Haml, können Sie die :javascript
Filter verwenden, anstatt einen Skript-Tages mit CDATA Definition und Inhalt manuell:
:javascript
google.load("jquery", "1.3.2");
google.load("jqueryui", "1.7.2");