javascript - Heroku 上的 Rails 应用程序中两次包含 jQuery

标签 javascript jquery ruby-on-rails heroku asset-pipeline

我的问题与这里的其他一些问题类似,但仍然没有为我的情况提供答案

我在 Gemfile 中将 jQuery gem 包含在我的应用程序中:

gem 'jquery-rails'

在 application.js 中:

//= require jquery
//= require jquery-ui
//= require jquery_ujs
...
//= require_tree .

我的development.rb有

# Do not compress assets
config.assets.compress = false
# Expands the lines which load the assets
config.assets.debug = true

我的 Assets 没有预编译,没有公共(public)/ Assets 。 本地一切都运行良好。但是当我推送到 heroku 时,页面上包含了不同的 application.js 文件。它不是 list 文件,而是缩小版的 jQuery。因此我将 jQuery 包含了两次。这是我的页面源代码的样子:

<script src="/assets/jquery.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery-ui.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script>
...
<script src="/assets/application.js?body=1" type="text/javascript"></script>

当我点击 /assets/application.js?body=1 时,我看到了缩小的 jQuery。当我在本地运行应用程序并单击 /assets/application.js?body=1 时,我只看到 list 。 我尝试添加到development.rb

 config.serve_static_assets = false

这没有帮助。我还多次清除 Assets 和缓存。 唯一对我有用的是设置

config.assets.debug = false

但我想知道是否还有其他不影响调试的选项。

最佳答案

我删除了这一行

//= require_tree .

并在 javascripts 中创建一个子文件夹,然后将 javascript 目录中的所有 js 文件移动到该子文件夹中,除了 application.js

并写下了这一行

//= require_tree ./sub_folder_name

它非常棒并且有效。

需要注意的一件重要事情:

这可能会对您造成影响,因为您通过 javascript_include_tag 手动包含同一个文件两次,并通过 application.js 手动包含同一个文件。首先确认如果是这种情况,您必须将其包含一次。

关于javascript - Heroku 上的 Rails 应用程序中两次包含 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12500788/

相关文章:

php - 如何将 PHP 日期格式转换为 Javascript

javascript - 如何正确重置浏览器样式(如 <button>)?

ruby-on-rails - rake cucumber 和 rake spec 始终使用 "develop"环境

javascript - 满足条件后删除对象

javascript - 是否可以从即将关闭的 ZMQ 套接字获取数据?

jquery - ListView 在 jQuery Mobile 的网格系统中显示不正确

javascript - 将 Background-color 属性应用于 div 无法按预期工作

javascript - 如何使用 Angularjs 在加载时显示图像?

ruby-on-rails - Ruby on Rails - 具有部分 View 的实例变量的范围

ruby-on-rails - Rails Active Record 查询包括委托(delegate)属性