我正在尝试在 Heroku Rails 4 applicarion 上显示一个 javascript 项目。在我的本地开发机器上,一切运行良好。无法让它在 Heroku 上工作。
在我的 application.html.erb 文件中,我添加了:
<%= javascript_include_tag "application" %>
在另一个视图文件(events.html.erb)中,我有:
<script type="text/javascript">
$(document).ready(function()
...code to add data to a timeline using getjson()...
</script>`
这是指 assets>javascripts 文件夹中的 timeline.js 文件。添加事件时(使用 Rails CRUD 操作,javascript 代码调用 getJson() 方法并将事件添加到时间线。这在本地机器上按预期工作。
当我推送到 Heroku 时,我可以通过 rails 添加事件,但不显示时间线。
我最初的想法是 Heroku 上没有加载 Javascript,因此我添加了一个简单的:
<script type="text/javascript">
alert('Displays OK')
</script>
调用,这在 Heroku(以及我的本地机器)上显示得很好。
在 Heroku 上查看页面源时,我可以看到:
<script src="/assets/application-6da332d35efc3706e98f87ead9900f20.js">
所以看起来timeline.js文件是预编译的(它似乎是时间线js的最小化版本)。
在我的本地机器上,我没有看到预编译的 js 文件,但我看到了:
<script src="/assets/timeline.js?body=1"></script>
<script src="/assets/timeline.min.js?body=1"></script>
在 Heroku 上,它显示 javascript 警报,但不显示时间线,这似乎表明预编译中的 javascript 代码有问题。
我在heroku日志中看不到任何明显的东西。它说 slug 编译已成功完成,我看不到错误消息。
有没有办法可以强制 Heroku 不使用预编译的 js 文件,所以我可以在 Heroku 上使用:
<script src="/assets/timeline.js?body=1"></script>
<script src="/assets/timeline.min.js?body=1"></script>
我在 production.rb 文件中有以下内容:
config.serve_static_assets = false
config.assets.js_compressor = :uglifier
config.assets.compile = true
config.assets.compress = true
config.assets.digest = true
config.assets.debug = false
希望有人可以帮助我。这几天一直困扰着我。任何帮助表示赞赏。谢谢!