我正在开发一个Ruby on Rails项目,在我的视图中单击一个link_to
元素应该会触发我的CoffeeScript中的一个方法,但输出永远不会被打印!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!")
我的控制台上写着“[AC]点击处理程序调用?“但没有别的,即使我点击链接后。
我一直在谷歌搜索了很多,几个帖子建议这个问题可能与turbolinks。上面的代码已经反映了我尝试过的几种解决方案中的两种(指定链接中的get方法,附带事件处理函数$(document).on('turbolinks:load', -> ...)
),其中没有一个为我解决。我是一个Rails初学者,对CoffeeScript毫无头绪,所以任何帮助都将不胜感激。
编辑:
在事件处理程序中link_to
元素和$(document).on('turbolinks:load', -> ...)
添加id选择#和删除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!"
谢谢! :)
你在期待'btn btn-primary btn-lg'选择器是否匹配? –
我发布的'link_to'元素的id是不正确的@mu? – megahra
(1)id-selectors使用'#'。 (2)''btn btn-primary btn-lg''看起来像一个班级列表,而不是一个id。 (3)一些时间阅读[jQuery选择器文档](http://api.jquery.com/category/selectors/)可能是一个好主意。 –