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