-1

我有一个网络应用程序,它使用从第三方 API 收集的数据生成报告。我已经让延迟工作在后台处理 API 调用和报告计算。我无法更新我的应用程序流程以适应后台处理。

在我使用后台处理之前...

  1. 用户将点击“新建报告”
  2. 带有活动微调器的模态视图将响应按钮单击显示
  3. 该应用程序将处理 API 调用
  4. 完成后,报告将create!redirect_to报告显示页面

在后台调用 API 时,应用程序重定向到空白报告(显然!)。delay_job 有一个success我可能需要使用的钩子,但我不确定如何从作业类/模型重定向?

4

1 回答 1

1

您可能会考虑创建一个新模型,例如ReportJob,来表示正在进行的报告生成。这将与delayed_job 使用的延迟作业实例一一对应。最基本的ReportJob需要两个字段:(state例如in_progresscompleted等)和report_urlreport_url将是nil在工作处于in_progress状态时开始。ReportJob一旦作业完成并进入completed状态,它将由延迟的作业填充。

用于启动作业的浏览器启动的 POST 将返回新创建ReportJob实例的 URL。然后您的 JavaScript 会在此 URL 上轮询,直到它state转换到completed此时您将设置window.location.hrefetc 为现在有效的report_urlURL 以显示新报告。

于 2013-08-02T17:58:46.153 回答