2012-04-17 92 views
1

所以我最近升級了一個大型項目到rails 3.1。我已經建立並運行了資產管道。然而,我們使用的很多插件和我們編寫的自定義jQuery函數似乎沒有得到評估,儘管源代碼位於application.js中。例如:jQuery的插件/功能沒有加載後導軌3.1升級

(function($) { 
    $.fn.searchable = function() { 
     .... 
    } 
    })(jQuery); 

我看到這個代碼的application.js,但任何試圖使用它得到一個JavaScript錯誤,未定義功能。但是,如果我將整個東西包裝在函數定義中,並在文檔準備好時調用該函數,那麼它就可以工作。

這是一個非常醜陋的解決方法。任何想法,爲什麼它不工作沒有包裝在一個函數?

謝謝。

+0

哦,痛苦!我最近(6個月前)將兩個2.3.8的大應用程序升級到了3. [1 | 2]。我記得同樣的問題。我希望我能記住我所經歷的所有細節,但我不會(我太老了!)。我記得的是,在某種程度上,出於挫折,我預先編制了資產。我只能記住它是打破日誌堵塞的關鍵,它以某種方式揭示了最終的答案(對於我的許多具體案例)。看起來很直觀!希望我能幫助更多!祝你好運! – RadBrad 2012-04-17 22:13:37

回答

0

也許你應該看看'coffeescript's namescope'。例如

//define your js function as: 
this.some_function_name() => 
    alert('hello~') 

//call it as: 
this.some_function_name() 
+0

這並不能真正解決我已經編寫並通常縮小的其他插件的問題。 – 2012-04-18 15:35:48