2015-04-01 79 views
0

所以我有一個小問題讓我瘋狂。jQuery事件監聽器在Heroku Production上不起作用

我有一個利用一些jQuery事件監聽器的Rails 4應用程序。這些在開發和分期方面非常有效。但是當我推動生產時,他們並沒有定下來。

值得一提的是,'staging'是Heroku上的Cedar-14應用,就像'production'一樣。

唯一的區別是RAILS_ENV ='暫存'而不是'生產'。

如果我使用控制檯初始化偵聽器,它們工作得很好。通過將生產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 

回答

1

仔細檢查你的寶石的順序的application.js

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

下一步,確保縮小時不會造成問題。將gem'uglifier'添加到您的gem文件中,並將以下內容添加到您的production.rb中config.assets.js_compressor = Uglifier.new(:mangle => false)

是否執行任何jQuery代碼?如果不是和uglifer沒有解決這個問題,請參考jQuery與jQuery(document)而不是$(document)

仍然爆發?通過在production.rb中添加config.assets.compile = true來啓用資產編譯後備功能。

如果添加編譯後備工作,資產管道中可能存在問題。我不多使用Heroku,但要確保所有資產都在環境中被擦除rake assets:clobber並且您的資產編譯正在部署中執行rake asset:precompile

如果仍然損壞,請將該文件發佈給您的聽衆。