Загрузить jQuery через Google API в Rails, используя HAML? - PullRequest
3 голосов
/ 09 октября 2009

Такое ощущение, что все должно быть довольно просто, но, похоже, загружается немного.

У меня есть это в моем 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'

... где мой *Файл 1007 * содержит несколько хороших jQuery.Я установил JRails , и мой jQuery отлично работает с локальными копиями библиотек, но я хочу использовать их из API Goolge.

Вот что генерирует мой браузер:

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

Я использую Safari и консоль ошибок, которая сообщает о следующих ошибках:

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

Соответственно, ни один из моих скриптов jQuery не работает.

Справка?

Ответы [ 2 ]

9 голосов
/ 09 октября 2009

javascript_include_tag автоматически ставит .js на конец. Кажется, нет никакого способа обойти это при использовании javascript_include_tag. Вы должны (согласно вашим собственным комментариям) создать свой собственный тег script:

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

Лично я предпочитаю пропустить jsapi и напрямую ссылаться на библиотеки, поэтому просто:

= javascript_include_tag 'http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js'
1 голос
/ 09 октября 2009

В качестве заметки о Haml, вы можете использовать фильтр :javascript вместо определения тега сценария с CDATA и содержимым вручную:

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