单击事件上的 Coffeescript 未触发?

Coffeescript on click event not firing?

我正在 Rails 项目的 Ruby 上工作,在我的视图中单击 link_to 元素应该会触发我的 CoffeeScript 中的方法,但从未打印输出!

这是我的 HTML(link 作品)的相关部分:

<%= link_to 'Start Quiz!', {:controller => :pages, :action => :start_quiz}, :id => 'btn btn-primary btn-lg', :method => :get %>

这是我的 ActionCable CoffeeScript 文件中的方法:

App.quiz_data = App.cable.subscriptions.create "QuizDataChannel",
  connected: ->
    console.log "[AC] on click handler called?"
    $(document).on('turbolinks:load', -> $('btn btn-primary btn-lg').on 'click', -> console.log "[AC] on click handler called!")

我的控制台显示“[AC] on click handler called?”但没有别的,即使我点击了 link.

我一直在谷歌上搜索很多,一些帖子表明问题可能出在 turbolinks 上。上面的代码已经反映了我尝试过的几种解决方案中的两种(在 link 中指定 get 方法,用 $(document).on('turbolinks:load', -> ...) 包含事件处理程序),none 为我修复了它。我是 Rails 初学者,对 CoffeeScript 一无所知,因此非常感谢任何帮助。

编辑:

在添加 ID 选择器 # 并删除 link_to 元素中的 get 方法和事件处理程序中的 $(document).on('turbolinks:load', -> ...) 之后 - 它终于起作用了! :D

HTML 元素现在:

<%= link_to 'Start Quiz!', {:controller => :pages, :action => :start_quiz}, :class => 'btn btn-primary btn-lg', :id => 'start_quiz_button' %>

现在的 CoffeeScript 文件:

App.quiz_data = App.cable.subscriptions.create "QuizDataChannel",
  connected: ->
    console.log "[AC] on click handler called?"
    $('#start_quiz_button').on 'click', -> console.log "[AC] on click handler called!"

谢谢! :)

1) 您需要将您的 ID 更改为有效 ID(阅读此 post),例如 start_quizz_button

2) 使用 id-selector # :

$(document).on('turbolinks:load', -> $('#start_quizz_button').on 'click', -> console.log "[AC] on click handler called!")