【问题标题】:Heroku and Rails 4: some javascript not workingHeroku 和 Rails 4:一些 javascript 不工作
【发布时间】:2013-08-30 10:57:45
【问题描述】:

我正在尝试在 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 文件夹中的时间线.js 文件。添加事件时(使用 Rails CRUD 操作,javascript 代码调用 getJson() 方法并将事件添加到时间线。这在本地机器上按预期工作。

当我推送到 Heroku 时,我可以通过 rails 添加事件,但时间轴不显示。

我最初的想法是 Javascript 没有加载到 Heroku 上,所以我添加了一个简单的:

<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

希望有人可以帮助我。这几天一直困扰着我。任何帮助表示赞赏。 谢谢!

【问题讨论】:

  • 没有压缩您的资产的选项吗?

标签: javascript ruby-on-rails heroku ruby-on-rails-4


【解决方案1】:

我认为您需要指定timeline.js 必须是预编译的。 在 config/environments/production.rb 中添加:

config.assets.precompile += %w( timeline.js )

在你看来,包括你的时间轴js:

<%= javascript_include_tag "timeline" %>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-20
    • 2015-08-06
    • 2013-10-25
    • 1970-01-01
    • 2014-03-24
    • 2016-05-08
    • 2016-02-22
    • 1970-01-01
    相关资源
    最近更新 更多