Google Charts グラフが外部サーバーからユーザー データを収集する Rails アプリがあります。ユーザー モデルには、サーバーからこのデータを取得するためのメソッドがあり、users#show コントローラー メソッドで呼び出されます。
このshow
メソッドは、メソッドを使用して解析するデフォルトの JSON を返しますusers_helper
。これらは、Google チャートが使用する JSON 形式の文字列 (JSON オブジェクトではない) を返します。
データの開始日と終了日を選択できる機能を追加しています。これは私のフォームです(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'
現在、デフォルトの期間は 2 か月です (date_from/date_to パラメータが空の場合にのみ発生します)。見ると、これは機能します。グラフは適切なデータを取得し、すべてがレンダリングされます。
remote: true
ただし、フォームから属性を削除しない限り、フォームを送信してもデータは変更されません。これを行うと、ページ全体が更新されますが、フォームで指定された正しいデータ時間枠でグラフが生成されます。
私が達成しようとしているのは、ページ内でグラフ データを更新することです。その後、フォームが送信されたときにグラフの再レンダリングを呼び出すことができます。AJAX の完璧なケースのように思えますが、私が試したすべてが機能しませんでした (ただし、私は AJAX と JavaScript に完全に慣れていないため、ほとんどがオンラインのものからカットアンドペーストされています)。