繁体   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