2009-10-08 5 views
3

Cela donne l'impression que cela devrait être assez simple, mais il ne semble pas y avoir beaucoup de chargement.Charger jQuery via l'API Google dans Rails à l'aide de HAML?

J'ai dans mon 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' 

... où mon dossier application.js contient quelque chose de bon « ole jQuery. J'ai installé JRails et mon jQuery fonctionne bien avec les copies locales des bibliothèques, mais je veux utiliser celles de l'API Goolge.

Voici ce que mon navigateur génère:

<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> 

J'utilise Safari et la console d'erreur, qui signale les erreurs suivantes:

ReferenceError: Can't find variable: google 
ReferenceError: Can't find variable: $ 

Corrélativement, aucun de mes scripts jQuery travaillent.

Aide?

+0

ce code HTML cette source de haml génère? –

+0

Non, rien de tout cela n'est généré. – neezer

+0

Qu'est-ce qui est affiché dans le navigateur? Quel code HTML, le cas échéant? –

Répondre

8

javascript_include_tag met automatiquement un .js à la fin. Il semble y avoir aucun moyen de contourner ce moment en utilisant javascript_include_tag. Vous devriez (selon vos propres commentaires) créer votre propre balise script:

%script{ :src => 'google.com/jsapi', :type => 'text/javascript', :charset => 'utf-8' } 

Personnellement, je préfère sauter le JSAPI, et la référence des bibliothèques directement, si juste:

= javascript_include_tag 'http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js' 
1

En sidenote à propos de haml, vous pouvez utiliser le filtre :javascript plutôt que de définir une balise de script avec CDATA et manuellement le contenu:

:javascript 
    google.load("jquery", "1.3.2"); 
    google.load("jqueryui", "1.7.2"); 
Questions connexes