[英]Heroku and Rails 4: some javascript not working
我正在尝试在Heroku Rails 4应用程序上显示一个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时,可以通过导轨添加事件,但是不会显示时间轴。
我最初的想法是没有在Heroku上加载Javascript,因此我添加了一个简单的方法:
<script type="text/javascript">
alert('Displays OK')
</script>
呼叫,这在Heroku(以及我的本地计算机)上也可以正常显示。
在Heroku上查看页面源代码时,我可以看到:
<script src="/assets/application-6da332d35efc3706e98f87ead9900f20.js">
因此,似乎timeline.js文件已预编译(似乎是timeline 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
希望有人可以帮助我。 几天来这一直困扰着我。 任何帮助表示赞赏。 谢谢!
我认为您需要指定必须预先编译timeline.js。 在config / environments / production.rb上,添加以下内容:
config.assets.precompile += %w( timeline.js )
在您的视图中,将时间轴js包含在其中:
<%= javascript_include_tag "timeline" %>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.