1

我的问题与此处的其他一些问题相似,但仍然没有为我的情况提供答案

我在 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

我的资产没有预编译,没有公共/资产。一切都在本地运行良好。但是当我推送到 heroku 时,我会在页面上得到不同的 application.js 文件。它不是一个清单文件,而是 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我只会看到清单。我试图添加到 development.rb

 config.serve_static_assets = false

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

config.assets.debug = false

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

4

3 回答 3

1

我删除了这一行

//= require_tree .

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

并写下了这一行

//= require_tree ./sub_folder_name

它很棒而且很有效。

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

这可能会导致您将同一个文件包含两次,一次由javascript_include_tag手动包含 ,另一次由 application.js 包含。首先确认如果是这种情况,您必须包含一次。

于 2013-05-21T03:04:26.620 回答
0

请查看有关预编译资产的 heroku上的这篇文章。当您推送到 heroku 时,您是否会在以下部分看到任何错误消息:

-----> Preparing Rails asset pipeline
       Running: rake assets:precompile

?

于 2012-09-19T18:52:53.420 回答
0

开发和生产应该是不同的(/app/assets 并且在开发中未缩小,公共/资产在生产中缩小。

至于双重包含,如果您的生产网络服务页面两者都有,我会检查您的应用程序是否有诸如 application.html.erb 之类的页面,看看它是否在那里定义。如果是这样,请将其删除。

于 2013-05-21T03:45:54.623 回答