-1

サード パーティの API から収集したデータを使用してレポートを生成する Web アプリがあります。API呼び出しを処理し、バックグラウンドで計算を報告するためにdelayed_jobが機能しています。バックグラウンド処理に対応するためにアプリ フローを更新するのに問題があります。

バックグラウンド処理を使用する前に...

  1. ユーザーは「新しいレポート」をクリックします
  2. ボタンのクリックに応答して、アクティビティ スピナーを含むモーダル ビューが表示されます。
  3. アプリは API 呼び出しを処理します
  4. 完了するcreate!redirect_to、レポートが表示され、レポートにページが表示されます

バックグラウンドでの API 呼び出しにより、アプリは空白のレポートにリダイレクトします (明らかに!)。delayed_job にはsuccessおそらく使用する必要があるフックがありますが、ジョブ クラス/モデルからどのようにリダイレクトすればよいかわかりません。

4

1 に答える 1

1

たとえばReportJob、進行中のレポート生成を表すために、新しいモデルを作成することを検討してください。これは、delayed_job によって使用される遅延ジョブ インスタンスと 1 対 1 で対応します。最も基本的なものは、(例:など) とのReportJob2 つのフィールドが必要です。ジョブがその状態にある間、開始することになります。ジョブが完了し、状態に移行すると、遅延ジョブによって設定されます。statein_progresscompletedreport_urlreport_urlnilin_progressReportJobcompleted

ジョブを開始するためにブラウザーで開始された POST は、新しく作成されたReportJobインスタンスの URL を返します。次に、JavaScript はこの URL をポーリングし、state移行するcompleted時点でwindow.location.hrefetc を現在有効なreport_urlURL に設定して、新しいレポートを表示します。

于 2013-08-02T17:58:46.153 に答える