2011-06-07 26 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的快捷方式重新別名$,但是這是一個清晰的方法。