我在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,所以我非常感谢任何帮助。如果您需要更多信息或查看任何其他文件,请告诉我们。
谢谢你的时间!
答案 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文件的正确位置。