在Heroku上找不到Rails Isotope Javascript资源

时间:2013-04-29 17:55:31

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

我在Heroku上找不到我的/ app / assets文件夹中的Isotope(http://isotope.metafizzy.co/)使用的两个Javascript文件时出现问题。在本地的开发模式中,它们被找到并且一切正常。但是一旦在Heroku的生产模式下,这两个文件就不存在了。我已经在Stack Overflow上阅读了很多类似的帖子,并阅读了很多有关资产管道的文章,但我似乎无法弄清楚导致问题的原因。

以下是我所知道的:

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

2)如果我做资源:precompile -trace,我没有得到任何错误,一切看起来都很正常。

3)在我的production.rb文件中,config.serve_static_assets = true。很多人似乎把它从虚假变为真,并且它解决了问题,但此时我不确定它应该是什么。

4)此问题可能是由于有问题的Isotope 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,所以我非常感谢任何帮助。如果您需要更多信息或查看任何其他文件,请告诉我们。

谢谢你的时间!

1 个答案:

答案 0 :(得分: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文件。

通过执行捆绑exec rake资产删除public / assets / *中的所有内容:clean,然后我再次推送到Heroku,允许它自己编译资产。那时它起作用了。我不完全确定推理,也许有人可以解释它,但对我来说,似乎一旦这两行被删除并且所有资产都被重新编译,它就知道要查找Isotope Javascript文件的正确位置。