0

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 に完全に慣れていないため、ほとんどがオンラインのものからカットアンドペーストされています)。

4

1 に答える 1

0

修正しました。この問題を抱えている他の人:

グラフ用の show.html ファイルと一緒に show.js ファイルを作成する必要がありました。その js で、グラフ データを再作成し、データからテーブルを再作成し、そのテーブルでグラフを再描画しました。Users コントローラーでは、format.html と format.js の両方を指定する Respond_to ブロックを配置しました。これを行った後、すべてが機能しました。更新はありません。日付フィールドで送信を押した後、グラフは新しいデータで再描画されます。

于 2013-07-16T14:02:02.140 に答える