我正在开发一个Ruby on Rails项目,在我的视图中单击link_to
元素应该在我的CoffeeScript中触发一个方法,但输出永远不会打印!
这是我的HTML的相关部分(链接有效):
<%= 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!")
我的控制台在点击处理程序中读取&#34; [AC],名为?&#34;但即便在我点击链接后,别无其他。
我一直在谷歌搜索,一些帖子表明问题可能与turbolinks有关。上面的代码已经反映了我尝试过的几个解决方案中的两个(在链接中指定get方法,用$(document).on('turbolinks:load', -> ...)
包含事件处理程序),没有一个解决方案适合我。我是Rails的初学者,对CoffeeScript一无所知,所以任何帮助都会非常感激。
修改
添加id选择器#并删除事件处理程序中link_to
元素和$(document).on('turbolinks:load', -> ...)
中的get方法 - 它最终有效! :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!"
谢谢! :)
答案 0 :(得分:1)
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!")