部署到heroku时Javascript没有执行,但在本地工作正常

时间:2014-04-13 02:08:50

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

这个问题似乎已被问过30种不同的方式,我尝试了所有解决方案而没有运气。

Rails 4应用程序在本地运行良好,但当部署到heroku(Cedar)时,javascript没有执行。我正在经历的流程:

1)RAILS_ENV =生产包exec rake资产:预编译 2)git add,然后提交 3)git push heroku master

我也试过在heroku和我的本地机器上破坏资产。

Production.rb

  config.cache_classes = true

  config.eager_load = true

  config.consider_all_requests_local       = false
  config.action_controller.perform_caching = true

  config.serve_static_assets = true

  config.assets.compress = true

  config.assets.js_compressor = :uglifier
  config.assets.css_compressor = :sass

  config.assets.digest = true

  config.assets.precompile += %w( '.woff', '.eot', '.svg', '.ttf' )

  config.active_support.deprecation = :notify

  config.log_formatter = ::Logger::Formatter.new

application.rb中

config.assets.version = '4.0'

config.assets.enabled = true

config.before_configuration do
  env_file = File.join(Rails.root, 'config', 'local_env.yml')
  YAML.load(File.open(env_file)).each do |key, value|
    ENV[key.to_s] = value
  end if File.exists?(env_file)
end

config.action_mailer.delivery_method   = :postmark
config.action_mailer.postmark_settings = { :api_key => ENV['POSTMARK_API_KEY']}

config.assets.initialize_on_precompile = false

config.middleware.use Rack::Attack

我也尝试过添加config.assets.compile = true

的application.js

//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require bootstrap
//= require turbolinks
//= require masonry/jquery.masonry
//= require masonry/jquery.imagesloaded.min
//= require masonry/jquery.infinitescroll.min
//= require masonry/modernizr-transitions
//= require underscore
//= require gmaps/google
//= require_tree .

当我在heroku上运行应用程序时,我可以通过开发人员工具看到javascript: enter image description here

..但是js没有执行。我在哪里错了?

1 个答案:

答案 0 :(得分:2)

尝试将//=require Turbolinks移动到application.js的最底部,看看是否有帮助。此外,您可以尝试关闭turbolinks。 Turbolinks很酷,但并不总能与其他人玩得很好。

希望这有帮助!