2013-08-02 50 views
-1

我有一個網絡應用程序,使用從第三方API收集的數據生成報告。我有delayed_job工作來處理API調用並在後臺報告計算。我無法更新我的應用程序流以適應後臺處理。如何調整我的應用程序邏輯以進行後臺處理?

我用的是後臺處理之前...

  1. 用戶會點擊「新報告」
  2. activity spinner響應按鈕,將顯示一個模式視圖中單擊
  3. 該應用程序將處理API調用
  4. 完成後,報告將create!redirect_to報告顯示頁面

隨着API調用在後臺,應用程序重定向到一個空白報告(顯然!)。 delayed_job有一個success掛鉤,我可能需要使用,但我不知道如何從作業類/模型重定向?

回答

1

您可能會考慮創建一個新模型,例如ReportJob,代表正在進行的報告生成。這將與delayed_job使用的延遲作業實例一一對應。最基本的ReportJob將需要兩個字段:state(例如in_progress,completed等)和report_urlreport_url將從nil開始,而作業處於in_progress狀態。一旦完成作業並且將ReportJob移入completed狀態,它將由延遲的作業填充。

瀏覽器啓動的POST開始作業將返回新創建的ReportJob實例的URL。您的JavaScript thens輪詢此URL,直到其state轉換爲completed,屆時您將設置window.location.href等到當前有效的report_url URL以顯示新報告。

相關問題