[英]Loading javascript files in rails 4
我的rails資產目錄中有一個結構,如下所示。
--javascripts
-utils // directory
helper.js
session.js
app.js
application.js
home.js
上面是我在rails中的目錄結構。 當我加載我的應用程序時,出現以下錯誤,我感覺是JS is not getting loaded properly
。
Uncaught TypeError: Cannot read property 'addMethod' of undefined additional-methods.min.js?body=1:3
Uncaught ReferenceError: Helper is not defined login.js?body=1:22
Uncaught TypeError: Cannot read property 'validate' of undefined
下面是我的application.js
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require vendor
//= require_tree .
是否需要執行特定操作以從特定目錄加載文件? 如何在我的application.js
加載Utils
目錄和其他文件
從文檔:
指令從上到下進行處理,但是未指定require_tree包含文件的順序。 您不應該依賴其中的任何特定順序。 如果您需要確保某些特定的JavaScript在串聯文件中排在其他某些JavaScript之上,請在清單中首先要求必備文件。
因此,如果您需要在Utils
中定義一些內容,例如在home.js
定義任何內容,我會在require_directory utils
上方添加require_directory utils
require_tree .
聲明。 我想這可能是您的JavaScript出了什么問題並引發了您發布的錯誤。
這就是文檔對require_directory
:
您還可以使用require_directory指令,該指令僅在指定目錄中包含所有JavaScript文件,而無需遞歸。
是否需要執行特定操作以從特定目錄加載文件?
做到這一點的方法是使用require_directory
或require_tree .
另一個目錄上的指令:
#app/assets/javascripts/application.js
#= require_tree ./utils
但是,如果您使用的是require_tree .
,這基本上將包括您parent
目錄下的所有目錄(稱為recursion )
正如Nicolay
所提到的,您基本上是希望以正確的順序包含JS。 盡管我不確定為什么您會在login.js
和login.js
additional-methods.min.js
遇到錯誤
這意味着您的JS正在嘗試調用它們,但未加載它們。 這只會導致類似預編譯的錯誤(如果您只是在dev中運行,則加載順序應該不是問題)
答案是將清單定義為在需要時包括各種文件:
#app/assets/javascripts/application.js
//= require jquery
//= require jquery_ujs
//= require_tree .
//= require vendor
//= require bootstrap
但更重要的是- 函數如何調用?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.