繁体   English   中英

Heroku和Rails 4:某些JavaScript无法正常工作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM