我有一个Rails应用程序,其中Google Charts图表从外部服务器收集用户数据。用户模型中有一种方法可以从服务器获取此数据,该方法在用户#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 :(得分:0)
修正了它。有这个问题的其他人:
我必须制作一个show.js文件以及图表的show.html文件。在那个js中,我重新填充了图表数据,从数据中重新制作了表格,并使用该表格重新绘制了图表。在Users控制器中,我输入了一个respond_to块,其中我指示了format.html和format.js。这样做之后,一切正常。没有刷新,图表只是在点击日期字段提交后重新使用新数据。