【发布时间】:2017-06-24 20:53:29
【问题描述】:
我正在开发一个 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!")
我的控制台显示“[AC] on click handler called?”但没有别的,即使我点击了链接。
我在谷歌上搜索了很多,一些帖子表明问题可能出在 turbolinks 上。上面的代码已经反映了我尝试过的几个解决方案中的 2 个(在链接中指定 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!"
谢谢! :)
【问题讨论】:
-
您希望
'btn btn-primary btn-lg'选择器匹配什么? -
我发布的
link_to元素的 id - @mu 不正确吗? -
(1) id-selectors 使用
#。 (2)'btn btn-primary btn-lg'看起来像一个类列表,而不是一个 id。 (3) 花点时间阅读jQuery selector docs 可能是个好主意。 -
是的,它曾经是我的 css 的一个类,在我多次尝试解决这个问题时,我有时只是将它更改为一个 id。我现在加了一个#,谢谢:)
标签: javascript ruby-on-rails coffeescript