【问题标题】:Why can I use the asset pipeline but require_tree . doesn't work?为什么我可以使用资产管道但 require_tree 。不工作?
【发布时间】:2014-06-29 01:08:43
【问题描述】:

不久前我升级了我的应用程序(在 heroku 上运行)以使用资产管道。

我将所有文件移到 app/assets 中,在 app/assets/javascript/application.js 中列出了每个文件并删除了 public。

当我推送到 heroku 时,资产被编译并且网站运行良好。

但是,如果我尝试使用 require_tree 而不是列出文件,它在本地或 Heroku 上都不起作用。我确实得到了一个 application.js 文件,但它似乎只是充满了 jquery 源代码,我的代码和我的 js 都没有在任何地方工作。

我也尝试过强制 jquery 在依赖的情况下首先加载:

$ cat application.js 
// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults
//
//= require jquery-1.7.2.min.js
//= require jquery-ui-1.8.22.custom.min.js
//= require_tree .

但它没有帮助。

如果我恢复使用:

$ cat application.js 
// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults
//
//= require_self
//= require jquery-1.7.2.min
//= require jquery-ui-1.8.22.custom.min
//= require default_on_first_input_field
//= require row_shading
//= require long_or_short_details
//= require sortable_hook
//= require date-picker
//= require rails

并将其推送到生产中,一切正常,各种 js 可用。

在任何一种情况下,js 应用程序页面都包含在app/views/layouts/application.html.haml

= javascript_include_tag "application"

我在本地使用 require_tree 遇到了同样的问题。在这种情况下,我的 javascript sn-ps 不起作用,即使我有

 <script src="/assets/jquery-1.7.2.min.js?body=1" type="text/javascript"></script>
  <script src="/assets/jquery-ui-1.8.22.custom.min.js?body=1" type="text/javascript"></script>
  <script src="/assets/date-picker.js?body=1" type="text/javascript"></script>
  <script src="/assets/default_on_first_input_field.js?body=1" type="text/javascript"></script>
  <script src="/assets/long_or_short_details.js?body=1" type="text/javascript"></script>
  <script src="/assets/rails.js?body=1" type="text/javascript"></script>
  <script src="/assets/row_shading.js?body=1" type="text/javascript"></script>
  <script src="/assets/sortable_hook.js?body=1" type="text/javascript"></script>
  <script src="/assets/application.js?body=1" type="text/javascript"></script>

在 HTML 头部

由于该应用程序最初是 rails 2.3.8 并且经过多次升级,有什么可能导致这种行为吗?

我查看了 javascript 控制台,但似乎没有任何错误可以解释它。

在页面本身我最终得到:

  <script src="/assets/jquery-1.7.2.min.js?body=1" type="text/javascript"></script>
  <script src="/assets/jquery-ui-1.8.22.custom.min.js?body=1" type="text/javascript"></script>
  <script src="/assets/date-picker.js?body=1" type="text/javascript"></script>
  <script src="/assets/default_on_first_input_field.js?body=1" type="text/javascript"></script>
  <script src="/assets/long_or_short_details.js?body=1" type="text/javascript"></script>
  <script src="/assets/rails.js?body=1" type="text/javascript"></script>
  <script src="/assets/row_shading.js?body=1" type="text/javascript"></script>
  <script src="/assets/sortable_hook.js?body=1" type="text/javascript"></script>
  <script src="/assets/application.js?body=1" type="text/javascript"></script>

【问题讨论】:

  • 你解决了吗?因为这真的很奇怪,我很好奇

标签: ruby-on-rails ruby-on-rails-3 heroku asset-pipeline


【解决方案1】:

你试过了吗?

//= require jquery-1.7.2.min.js
//= require jquery-ui-1.8.22.custom.min.js
//= require_tree .
//= require_self

您的帖子中似乎删除了require_self

【讨论】:

  • 我的错误。我加回来了。以上没有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-05
  • 2011-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-26
  • 2011-12-31
相关资源
最近更新 更多