我正在開發一個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/)可能是一個好主意。 –