2013-07-08 55 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。做完这些之后,一切都奏效了。没有刷新,图表只是在点击提交日期字段后使用新数据自己重新绘制。