我想在Rails中創建一個自定義動作,它將更新視圖並在div上打印一些信息。Rails 3 - 自定義ajax動作不起作用
我使用寶石進行文件上傳: https://github.com/valums/file-uploader/blob/master/client/fileuploader.js
後上傳成功我想和AJAX頁面有多少毫秒需要更新。
在舊的Rails我會寫有:
def set_tab
@diff = count_miliseconds_method
render :update do |page|
page.replace_html "place_menu", render(:partial => 'place_menu')
end
end
但我無法弄清楚如何做到這一點的Rails的3.1。
我的自定義操作的控制器代碼:
def custom
[...] # Here everything works OK
start_time = Time.now
Some_method
end_time = Time.now
@diff = ((end_time - start_time)*100).to_i # counted miliseconds
respond_to do |format|
format.json {render :json => {:success => true, :time => @diff}, :status => :created, :location => custom_words_path}
end
end
我custom.js.erb代碼
var el = $('#upload-log');
el.append("#{@diff} ms");
不幸的是,這並不工作。我得到迴應,例如 {"success":true, "time":324}
但js.erb文件沒有得到執行,頁面沒有包含有關毫秒的信息。
任何想法如何解決這個問題?
更新
Github上回購: https://github.com/there-is-no-spoon/Anagram
窗口。所以這是個更大的問題,因爲我通過JS插件調用了這個動作。下面是代碼:https://github.com/there-is-no-spoon/Anagram/blob/master/app/views/words/index .html.erb –
閱讀js手冊。你需要爲文件上傳器實現onComplete事件處理程序。 –
我認爲這足以將操作更改爲/words/uploader.js。但@AdityaSanghi建議也可以 - 你可以用onComplete處理程序來實現你想要的。 –