[英]Rails 3.2.13 Javascript Asset Pipeline
我正在使用Rails 3.2.13
應用程序,遇到以下問題:
我在app / assets / javascripts /目錄中編寫的Javascript文件似乎沒有運行。
我在app / assets / javascripts /目錄中名為menu_list.js的文件中包含JS代碼,但它沒有任何作用。 而當我在標簽的視圖頁面上放置相同的代碼時,它可以工作。
<script>$("#sortable").sortable();</script>
這是我的application.js文件:
//= require jquery
//= require jquery_ujs
//= require jquery.purr
//= require jquery-ui
//= require best_in_place
//= require bootstrap
//= require bootstrap-switch
//= require_tree .
我的menu_list.js文件:
$(function() {
$("#sortable").sortable();
});
這對我來說沒有意義,因為我認為//= require_tree .
將包括目錄中的所有javascript文件。 我也嘗試過其他javascript文件,但它們似乎沒有任何作用。
造成這種情況的最常見原因是,對默認布局上的javascript_include_tag
的調用,然后您創建了另一個布局,忘記在其中添加include,然后在使用該新布局的控制器中沒有任何效果。
$("#sortable").sortable();
如果這確實是您在app/assets/javascripts/menu_list.js
,它將在腳本加載后立即運行,這不是您想要的。 您希望至少在DOM完全加載到頁面中之后而不是之前運行以上代碼。
$(function() {
$("#sortable").sortable();
});
如果您運行的環境是:development
,並且您的布局中正確包含以下內容
<%= javascript_include_tag "application" %>
對於Sprockets正在加載的每個Javascript文件,您都會看到一個單獨的<script>
標簽。 //= require_tree .
將提取您的app/assets/javascripts/menu_list.js
文件。
我建議還通過在shell中運行以下命令來確保您沒有資產的任何預編譯版本
rake assets:clean
您還可以通過在上面的include標記中添加:debug
選項來強制調試模式(每個文件分別使用<script>
標記)
<%= javascript_include_tag "application", debug: true %>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.