2013-04-15 74 views
0

在Rails 3.2的項目我有一個的application.js文件看起來像:Rails資產管道和jquery插件。我錯過了什麼?

//= require jquery 
//= require jquery.hoverIntent 
//= require jquery_ujs 
//= require my_custom_js 

而且在我的佈局,我們只是簡單地引用<%= javascript_include_tag 'application' %>

my_custom_js.js的代碼實際上使用的插件從jquery.hoverIntent.js,但是當我加載頁面時,我收到一個javascript錯誤,指出對象上沒有這樣的hoverIntent函數,即使我可以檢查元素並查看對現有文件的健康引用。

這裏的動機是,如果我移動這兩個引用application.js它加載得很好。即:

<%= javascript_include_tag 'application' %> 
<%= javascript_include_tag 'jquery.hoverIntent' %> 
<%= javascript_include_tag 'my_custom_js' %> 

我在這裏錯過了什麼?

+0

你用'jquery-rails'寶石嗎?如果你使用'jquery-rails'寶石。不需要jQuery中的application.js –

+0

我使用的是jQuery的鐵軌,但根據他們的文檔(https://github.com/indirect/jquery-rails),你應該包括需要jquery和jquery_ujs在應用程序中。 JS。如果我刪除這些行,我會得到'$'沒有定義,'jQuery'沒有定義錯誤。 – zacharydanger

+0

不,我的意思是你只需要在開始時需要jquery_ujs,不需要jquery –

回答

0

在您的/layouts/application.html.erb中,將這些片段添加到您的head部分以加載jquery。

<%= javascript_include_tag "jquery" %> 
<%= javascript_incldue_tag 'jquery.hoverIntent' %> 
<%= javascript_incldue_tag 'my_custom_js' %> 

這將加載所有頁面上的jQuery。

如果您需要更多關於爲什麼application.js不起作用的更多信息,請閱讀this以瞭解更多信息。我唯一的想法是你的插件沒有被命名爲jquery.hoverIntent或者你的路徑是錯誤的。

+0

對,並且工作正常,但爲什麼'application.js'版本不工作?這不應該在功能上等同嗎? – zacharydanger

+0

我已更新我的回答 –

+0

路徑加載正常。在開發模式下,它顯示包含插件和我的JavaScript的正確內容的包含文件。它似乎只是加載順序,我不知道爲什麼。 – zacharydanger

0

好的。我知道了,我覺得很愚蠢。資產管道按預期工作,但我之前已經預編譯過資產,並且它正在提供之前預編譯的application.js,它正在重新加載jQuery,但沒有插件。