1

Rails プロジェクトに Google Chart の ColumnChart があります。これは、JSON をレンダリングする Rails コントローラー アクションを呼び出すことにより、JavaScript で生成および設定されます。

グラフには、顧客の 1 か月分の情報が表示されます。

グラフの上には、顧客がグラフに表示される月を変更できる次と前の矢印があります。これらには、現状では機能がありません。

私の質問は、チャートを表示している顧客の現在の月に関して、チャートの状態を保存する最良の方法は何ですか.

ワークフローを実行することを考えていた方法は次のとおりです。

  1. 矢印の 1 つが選択されます。
  2. このイベントは JavaScript でキャプチャされます。
  3. JSON をレンダリングする Rails アクションへの別のリクエストは、矢印ボタン ( + または - のいずれか) の data 属性に基づいて、渡された追加の GET パラメータで実行されます。
  4. グラフは、新しい JSON 応答を使用して再レンダリングされます。

グラフの現在の日付をインクリメントまたはデクリメントするロジックは、サーバー側で実行されますか? チャートの日付がセッション配列に格納されている場合、最初の読み込み時にデフォルトで現在の日付になりますか?

一方、チャートの状態をクライアント側で JavaScript コード内または Cookie に保存し、Rails コントローラーに送信する前に日付を操作することは理にかなっていますか?

私は約 6 か月間 Rails で開発を行っており、慣れていますが、AJAX を使用して JavaScript で開発を始めたのはつい最近のことです。JS コードを Rails と結び付けた私の経験は、現時点では限定的なものです。そのため、これにアプローチする方法についてのアドバイスやベスト プラクティスを探しています。

どんなアドバイスでも大歓迎です。

4

1 に答える 1

1

良いものと悪いもの、いくつかのオプションを見ていきます。

まず、絶対にやりたくないことは、Cookie やその他の形式の永続的なサーバー側ストレージで現在の月の概念を保持することです。確かにサーバーの状態が必要な場合もありますが、簡単な代替手段である場合は使用しないでください。REST (Rails の大部分が構築されている) の一部は、データの状態をそのように分散させるのではなく、純粋な属性でデータを表現しようとしています。

ここから、ほとんどの解決策はおそらく受け入れられ、意見がより大きな役割を果たします。できることの 1 つは、現在の月を使用して +/- 記号から月を計算し、それをサーバーに送信することです。サーバーは、要求された月の情報を返します。

ただし、有効な日付範囲を作成できる JavaScript を作成する必要があり、この機能のほとんどはおそらく既にサーバー上にあるため、私はこれの大ファンではありません。+/- と現在の月をサーバーに渡すだけでも機能します。サーバー上のサインを別の月に解決するために、ルーティングとロジックを少し追加する必要があります。

これらのいずれも機能しますが、私の推奨するソリューションでは、その月の最初のリクエストで隣接する月の有効な表現を生成し、これをクライアントに返します。次に、要求されたデータでグラフを更新するときに、グラフの前方/後方リンクもサーバーから提供されたリンクに置き換えます。これにより、前の 2 つのソリューションの利点が見事に融合されます。つまり、サーバーでルーティングを追加する必要がなく、クライアント側のコードに実質的な追加を行う必要もありません。また、クライアントからデータが収集されなかった月への移行をグレー表示できるという追加の利点もあります (つまり、顧客になる前と将来)。これがなければ、存在しない情報に対するクライアントの要求を処理する別のロジックを作成する必要があります。

于 2012-12-03T20:18:35.237 に答える