【问题标题】:jQuery Event listeners not working on Heroku ProductionjQuery 事件侦听器不适用于 Heroku Production
【发布时间】:2015-04-01 17:31:56
【问题描述】:

所以我有一个小问题让我抓狂。

我有一个使用一些 jQuery 事件侦听器的 Rails 4 应用程序。这些在开发和分期方面工作得很好。但是当我推动生产时,他们并没有准备好。

值得一提的是,“staging”是 Heroku 上的 Cedar-14 应用程序,就像“production”一样。

唯一的区别是 RAILS_ENV = 'staging' 而不是 'production'。

如果我使用控制台初始化侦听器,它们会很好地工作。通过将生产 RAILS_ENV 更改为“暂存”,侦听器也可以工作。

我的 production.rb 和 staging.rb 是相同的。目前资产没有被丑化或任何东西,据我所知,它们以相同的方式提供给客户。

所以我的问题是,RAILS_ENV 在生产中设置了什么会阻止我的任何“$.on”侦听器设置?

版本

jQuery 1.11.1
Rails 4.1.4
Ruby 2.2.0
Turbolinks 2.3.o

【问题讨论】:

    标签: jquery ruby-on-rails heroku turbolinks


    【解决方案1】:

    在 application.js 中仔细检查 gem 的顺序

    //= require jquery
    //= require jquery.turbolinks
    //= require jquery_ujs
    //= require turbolinks
    

    下一步,确保缩小不会导致问题。将 gem 'uglifier' 添加到您的 gemfile,并将以下内容添加到您的 production.rb config.assets.js_compressor = Uglifier.new(:mangle => false)

    是否执行任何 jQuery 代码?如果没有并且 uglifer 没有解决问题,请使用 jQuery(document) 而不是 $(document) 引用 jQuery

    还是破产了?通过将 config.assets.compile = true 添加到 production.rb 来启用资产编译回退。

    如果添加编译回退有效,则您的资产管道中可能存在问题。我很少使用 Heroku,但请确保在环境 rake assets:clobber 上擦除所有资产,并且确保您的资产编译正在部署时执行 rake asset:precompile

    如果仍然损坏,请将文件发布给您的听众。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-25
      • 1970-01-01
      • 2023-02-23
      • 2016-02-18
      相关资源
      最近更新 更多