我的问题与这里的其他一些问题类似,但仍然没有为我的情况提供答案
我在 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/