2013-07-08 56 views
0

我有一個Rails應用程序在谷歌圖表圖表從外部服務器收集用戶數據。用戶模型中有一個用於從服務器獲取此數據的方法,該方法在users#show controller方法中調用。更新谷歌圖表數據提交

show方法返回一個默認的JSON,然後我使用users_helper方法解析出來。這些返回一個JSON格式的字符串(不是JSON對象)供Google Charts使用。

我添加功能,以便能夠選擇一個日期從和日期爲數據。這是我的表(HAML):

= form_tag({:controller=>"manage/users", :action=>"show"}, :id => "datesform", method: :get, remote: true) do 
    = text_field_tag :date_from, "", data: {behaviour: "datepicker"}, placeholder: "Date from", :id => "date_from_box" 
    = text_field_tag :date_to, "", data: {behaviour: "datepicker"}, placeholder: "Date to", :id => "date_to_box" 
    = submit_tag ("Search"), :id => 'chart_submit_dates' 

目前,默認的時間跨度兩個月(只發生如果date_from/DATE_TO PARAMS是空的)。在查看時,這是有效的。圖形獲得正確的數據並呈現所有內容。

然而,提交表單無助於改變數據,除非我刪除從形式remote: true屬性。當我這樣做時,整個頁面會刷新,但圖形會在表單中指定的正確數據時間範圍內生成。

我試圖做到的,是在曲線數據頁面內更新,然後我可以調用表單提交時一個圖表的重新渲染。這聽起來像AJAX一個完美的情況下,但一切我試過沒有工作(雖然我是一個完整的小白到Ajax和JavaScript,因此它已經削減大多和粘貼來自網上的東西)

回答

0

固定它。任何人有這個問題:

我不得不做出一個show.js文件與圖表的show.html文件一起。在那個js中,我重新填充了圖形數據,重新從數據中重新繪製表格,並且使用該表格重繪圖形。在Users控制器中,我放置了一個respond_to塊,其中我指出了format.html和format.js。做完這些之後,一切都奏效了。沒有刷新,圖表只是在點擊提交日期字段後使用新數據自己重新繪製。