2011-06-07 25 views
0

任何人都有这个问题 - 我无法从位于我的应用程序js文件中的Rails应用程序中的任何页面调用任何JS。我可以在外部文件中执行代码或嵌入到页面中,但不是我是该文件。我很难过。有任何想法吗。我试图访问jqwery btw。Application.js文件不在范围内

这里是我的application.html.erb

<%= javascript_include_tag "jquery.jeditable" %> 
    <%= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" %> 
    <%= javascript_include_tag "http://use.typekit.com/jdj1xqp.js" %> 
    <%= javascript_include_tag :defaults %> 

下面是输出

<script src="/javascripts/jquery.jeditable.js?1306352056" type="text/javascript"></script> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script> 
    <script src="http://use.typekit.com/jdj1xqp.js" type="text/javascript"></script> 

    <script src="/javascripts/prototype.js?1305685037" type="text/javascript"></script> 
    <script src="/javascripts/effects.js?1305685037" type="text/javascript"></script> 
    <script src="/javascripts/dragdrop.js?1305685037" type="text/javascript"></script> 
    <script src="/javascripts/controls.js?1305685037" type="text/javascript"></script> 
    <script src="/javascripts/rails.js?1305685037" type="text/javascript"></script> 
    <script src="/javascripts/application.js?1307485399" type="text/javascript"></script> 

,这里是我的application.js

// Place your application-specific JavaScript functions and classes here 
    // This file is automatically included by javascript_include_tag :defaults 
    $(document).ready(function(){ 

    $("#big-search-box").bind("keyup", function() { 
     $("#big-search-box").addClass("loading"); // show the spinner 
     var form = $("#live-search-form"); // grab the form wrapping the search bar. 
     var url = "/schools/find"; // live_search action. 
     var formData = form.serialize(); // grab the data in the form 
     $.get(url, formData, function(html) { // perform an AJAX get 
      $("#big-search-box").removeClass("loading"); // hide the spinner 
      $("#live-search-results").html(html); // replace the "results" div with the   results 
     }); 
     }); 
    }); 
+1

文件是否正确加载?查看Chrome开发人员工具中的网络面板或Firebug中的网络面板。您应该看到200个成功代码和您的'application.js'文件的内容。 – 2011-06-07 23:14:15

+1

您是否可以更新您的问题以包含您想要调用的内容的几个代码示例,您如何调用它以及代码的存在位置?另外,你在哪里/如何在你的页面中包含application.js?这些信息应该有助于回答你的问题。谢谢:) – 2011-06-07 23:14:17

+0

另外,你有'= javascript_include_tag:defaults'在你的'app/views/layouts/application。*'?如果没有,你需要手动包含'application.js', – David 2011-06-08 01:55:21

回答

1

简单的问题,你加载的jQuery:

<%= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" %> 

和原型:

<script src="/javascripts/prototype.js?1305685037" type="text/javascript"></script> 

这些都将严重硬碰硬。你需要调用jQuery.noConflict

然后,你需要改变任何jQuery代码使用jQuery.而非$.

或者,你需要删除任何使用的原型,这是每一个默认轨js文件。

你的application.js应该

jQuery(document).ready(function(){ 
    jQuery("#big-search-box").bind("keyup", function() { 
     jQuery("#big-search-box").addClass("loading"); // show the spinner 
     var form = jQuery("#live-search-form"); // grab the form wrapping the search bar. 
     var url = "/schools/find"; // live_search action. 
     var formData = form.serialize(); // grab the data in the form 
     jQuery.get(url, formData, function(html) { // perform an AJAX get 
      jQuery("#big-search-box").removeClass("loading"); // hide the spinner 
      jQuery("#live-search-results").html(html); // replace the "results" div with the   results 
     }); 
    }); 
}); 

有一个jQuery的快捷方式重新别名$,但是这是一个清晰的方法。