我有一个 Rails 应用程序,其中 Google Charts 图表从外部服务器收集用户数据。用户模型中有一个方法可以从服务器获取此数据,该方法在 users#show 控制器方法中调用。
该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 参数为空时才会发生)。看过之后,这行得通。图表得到正确的数据,一切都被渲染了。
remote: true
但是,除非我从表单中删除该属性,否则提交表单不会更改数据。当我这样做时,整个页面都会刷新,但图表是使用表单中指定的正确数据时间范围生成的。
我想要实现的是在页面内更新图形数据,然后我可以在提交表单时调用图形的重新渲染。这听起来像是 AJAX 的完美案例,但我尝试过的一切都没有奏效(虽然我对 AJAX 和 javascript 完全是个菜鸟,所以它主要是从网上的东西中剪切和粘贴的)