wiw*_*978 2 javascript ruby-on-rails heroku ruby-on-rails-4
我正在尝试在Heroku Rails 4应用程序上显示一个javascript项目.在我的本地开发机器上,一切都运行得很好.无法让它在Heroku上运行.
在我的application.html.erb文件中,我添加了:
<%= javascript_include_tag "application" %>
Run Code Online (Sandbox Code Playgroud)
在另一个视图文件(events.html.erb)我有:
<script type="text/javascript">
$(document).ready(function()
...code to add data to a timeline using getjson()...
</script>`
Run Code Online (Sandbox Code Playgroud)
它指的是assets> javascripts文件夹中的timeline.js文件.添加事件时(使用Rails CRUD操作,javascript代码调用getJson()方法并将事件添加到时间轴.这在本地计算机上按预期工作.
当我推送到Heroku时,我可以通过rails添加事件,但不显示时间轴.
我最初的想法是没有在Heroku上加载Javascript,所以我添加了一个简单的:
<script type="text/javascript">
alert('Displays OK')
</script>
Run Code Online (Sandbox Code Playgroud)
调用,这在Heroku(以及我的本地机器)上显示正常.
在Heroku上查看页面源代码时,我可以看到:
<script src="/assets/application-6da332d35efc3706e98f87ead9900f20.js">
Run Code Online (Sandbox Code Playgroud)
所以似乎timeline.js文件是预编译的(它似乎是时间轴js的最小化版本).
在我的本地机器上,我没有看到预编译的js文件,但我看到:
<script src="/assets/timeline.js?body=1"></script>
<script src="/assets/timeline.min.js?body=1"></script>
Run Code Online (Sandbox Code Playgroud)
事实上,在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>
Run Code Online (Sandbox Code Playgroud)
我在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
Run Code Online (Sandbox Code Playgroud)
希望有人可以帮助我.这已经困扰了我几天了.任何帮助赞赏.谢谢!
我认为你需要指定timeline.js必须预编译.在config/environments/production.rb上,添加以下内容:
config.assets.precompile += %w( timeline.js )
Run Code Online (Sandbox Code Playgroud)
在您查看中,包括您的时间轴js:
<%= javascript_include_tag "timeline" %>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1713 次 |
| 最近记录: |