2014-03-26 111 views
2

我正在用CoffeeScript做一個Ajax請求,然後渲染一個來自我的控制器的部分,但之後部分渲染不了使用我以前的Javascript。Rails 4:渲染後部分無法使用javascript(使用ajax)

例子:

在結束我的我的home_controller的行動,我有:

respond_to do |format| 
    format.html { render partial: 'frame' } 
end 

在我home.js.coffee

$('#plouf').click -> 
    alert('test') 
在我的部分 _frame.html.erb(在主文件夾

然後意見文件夾)

<span id="plouf">test<span> 

如果我點擊這個跨度,什麼都不會發生......

<%= javascript_include_tag "application", "data-turbolinks-track" => true %> 

但是,如果我在局部添加此行它的工作原理,但我知道它是醜陋的,因爲我已經在我的application.html.erb

做到了

我是否錯過了一些東西,或者它不正常,部分不能使用任何以前的Javascript?

回答

6

在瀏覽器運行javascript之前,將部分編譯到視圖中。

你需要的是

$(document).on 'click', '#plouf', -> 
    alert('test') 

此結合事件的文件,所以當turbolinks或AJAX重新加載HTML,你的事件處理程序仍然有效。

+0

謝謝!我現在明白了,但我不得不重寫爲:'$(document).on('click','#plouf',( - > alert('test')))' – Romain

+1

請修正逗號,應該是: '$(document).on'click','#plouf', - >' –

+0

@d_rail更好?你總是可以建議一個編輯:) – OneChillDude