使用HAML在Rails中通过Google API加载jQuery?

时间:2009-10-08 22:35:32

标签: jquery ruby-on-rails haml jrails

这感觉它应该很简单,但似乎没有多少装载。

我在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'

...我的application.js文件包含一些好的'ole jQuery。我已经安装了JRails,我的jQuery可以正常使用库的本地副本,但是我想使用Goolge API中的那些。

以下是我的浏览器生成的内容:

<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 个答案:

答案 0 :(得分:9)

javascript_include_tag自动将.js放在最后。使用javascript_include_tag时似乎没有办法解决这个问题。您应该(根据自己的意见)创建自己的脚本标记:

%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 :(得分:1)

作为关于Haml的旁注,您可以使用:javascript过滤器,而不是手动定义带有CDATA和内容的脚本标记:

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