簡體   English   中英

Rails 3.2.13 Javascript資產管道

[英]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.

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