【问题标题】:Rails Isotope Javascript assets not found on Heroku在 Heroku 上找不到 Rails Isotope Javascript 资产
【发布时间】:2013-05-01 03:01:14
【问题描述】:

在 Heroku 上找不到我的 /app/assets 文件夹中 Isotope (http://isotope.metafizzy.co/) 使用的两个 Javascript 文件时遇到问题。在本地开发模式下,可以找到它们并且一切正常。但是一旦在 Heroku 上进入生产模式,这两个文件就不存在了。我在 Stack Overflow 上阅读了很多类似的帖子,并阅读了很多关于资产管道的内容,但我似乎仍然无法弄清楚是什么导致了问题。

这是我所知道的:

1) 正在我的 /app/assets 文件夹中找到其他 Javascript 文件,包括 Bootstrap。

2) 如果我 rake assets:precompile -trace,我不会收到任何错误,一切看起来都很正常。

3) 在我的 production.rb 文件中,config.serve_static_assets = true。很多人似乎将其从 false 转换为 true 并解决了他们的问题,但目前我不确定应该是哪个。

4) 这个问题可能是由于有问题的同位素 Javascript 文件造成的。在我的一个 html.erb 文件中,我根据开发人员的文档添加了一些与 Isotope 相关的 Javascript,如下所示:

 <script src="../assets/jquery-1.7.1.min.js"></script>
  <script src="../assets/jquery.isotope.min.js"></script>
  <script>
    $(function(){

      var $container = $('#eventcontainer');
      $container.imagesLoaded(function(){
        $container.isotope({
          layoutMode : 'spineAlign',
          spineAlign: {
              gutterWidth: 30
          },
          itemSelector : '.element',

      });
     });
 ....... more here that works in dev mode...
  </script>

我认为问题出在这两行:

<script src="../assets/jquery-1.7.1.min.js"></script>
<script src="../assets/jquery.isotope.min.js"></script>

因为如果我删除它们,我的应用即使在开发中运行时也找不到 Javascript 文件。但是,它们包含在我的 application.js 文件中:

//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require jquery-1.7.1.min
//= require jquery.isotope.min
//= require bootstrap-datepicker
//= require bootstrap-timepicker
//= require_tree .
//= require_self

所以我不确定为什么找不到它们或如何解决问题。我对 Rails 尤其是 Heroku 还很陌生,所以我非常感谢任何帮助。如果您需要更多信息或查看任何其他文件,请告诉我。

感谢您的宝贵时间!

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 heroku jquery-isotope


    【解决方案1】:

    我可以通过删除这些行来解决这个问题

    <script src="../assets/jquery-1.7.1.min.js"></script>
    <script src="../assets/jquery.isotope.min.js"></script>
    

    并使用此处找到的信息:Rails/Heroku precompiled assets not being found。具体如下:

    附注特别重要:“如果 在您的应用程序中检测到 public/assets/manifest.yml,Heroku 将假设 您正在自己处理资产编译,不会尝试 编译你的资产。”

    确保删除 public/assets/* 文件夹下的所有内容 预编译已创建,包括该 manifest.yml 文件。

    通过执行 bundle exec rake assets:clean 删除 public/assets/* 中的所有内容后,我再次推送到 Heroku,允许它自己编译资产。那时它起作用了。我不完全确定其中的原因,也许有人可以解释一下,但在我看来,一旦删除了这两行并重新编译了所有资产,它就知道在正确的位置查找同位素 Javascript 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-25
      相关资源
      最近更新 更多