为什么我可以使用资产管道但require_tree。不工作?

时间:2014-06-29 01:08:43

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

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

我将所有文件移动到app / assets中,每个文件都列在app / assets / javascript / application.js中并公开删除。

当我推送到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片段也无法正常工作
 <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>

1 个答案:

答案 0 :(得分:1)

你试试这个吗?

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

您的帖子中似乎已删除require_self