簡體   English   中英

在Rails 4中加載JavaScript文件

[英]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_directoryrequire_tree . 另一個目錄上的指令:

#app/assets/javascripts/application.js
#= require_tree ./utils 

但是,如果您使用的是require_tree . ,這基本上將包括您parent目錄下的所有目錄(稱為recursion


正如Nicolay所提到的,您基本上是希望以正確的順序包含JS。 盡管我不確定為什么您會在login.jslogin.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM