咖啡脚本包含在资产中时不起作用

Coffee script not working when included in assets

我有一些咖啡脚本可以在折叠列表时切换一些 css 类,但是当我把它放在一个单独的 .js.coffee 中时它似乎不起作用/assets/javascripts 目录中的文件,但是当我将它包含在 HAML 文件中时它确实有效。咖啡脚本似乎可以编译并包含在页面的头部,但根本不起作用。有什么想法吗?

  $('#collapseTwo').on 'hidden.bs.collapse', ->
    if $('#collapseOne').hasClass('show')
      $('#collapseOne').addClass('extended')
    $('#collapseOne').removeClass('regular')
    $('#collapseTwo').removeClass('regular')
    $('#collapseTwo').removeClass('extended');

  $('#collapseTwo').on 'show.bs.collapse', ->
    unless $('#collapseOne').hasClass('show')
      $('#collapseTwo').addClass('extended')
    if $('#collapseOne').hasClass('extended')
      $('#collapseOne').removeClass('extended')
      $('#collapseOne').addClass('regular')
      $('#collapseTwo').addClass('regular');

  $('#collapseOne').on 'hidden.bs.collapse', ->
    if $('#collapseTwo').hasClass('show')
      $('#collapseTwo').addClass('extended')
    $('#collapseTwo').removeClass('regular')
    $('#collapseOne').removeClass('regular')
    $('#collapseOne').removeClass('extended');

  $('#collapseOne').on 'show.bs.collapse', ->
    unless $('#collapseTwo').hasClass('show')
      $('#collapseOne').addClass('extended')
    if $('#collapseTwo').hasClass('extended')
      $('#collapseTwo').removeClass('extended')
      $('#collapseOne').addClass('regular')
      $('#collapseTwo').addClass('regular');

gem 'coffee-rails' 添加到您的 gemfile,然后 运行 bundle install

并记得 require application.js 中的 coffeescript 文件,例如 //= require moment

在咖啡文件中添加 $(document).on 'ready page:load', -> 作为第一行。