0

我的 rails 3.2 应用程序有一个报告页面,通常需要 90 多秒才能呈现,因此我将报告生成器作为延迟作业任务运行,然后显示“等一下”视图(带有刷新按钮),直到内容准备好(那里是content_ready视图中用于显示“等待消息”或报告的标志,视情况而定)。在我的原型中,用户必须手动刷新页面,直到content_ready设置(然后呈现报告视图)。

我想让页面自动刷新content_ready为真时自动刷新。

什么是最简单的方法来实现这一点,因为它是一个很少被点击的页面,因此是一种低效的方法,例如告诉用户的浏览器每 10 秒轮询一次服务器(或重绘整个页面),就可以了?

4

2 回答 2

1

设置页面上的元刷新或 ajax 更新程序(如果使用 jquery,请参阅此处),以检查特定的控制器操作,告诉您作业是否已完成,或者文件是否存在于预期的位置。

或者,假设您正在使用delayed_job gem,请查看作为作业排队执行的一部分提供的挂钩。gem 的 GH page上有文档。

于 2013-04-19T01:30:27.477 回答
1

我推荐以下策略:

  • 创建延迟作业后,立即将作业的 id 传回浏览器。
  • 在您的站点上公开一个将返回作业状态的端点。
  • 使用 jQuery + setTimeout 或 setInterval 来命中端点。
  • 作业完成后,将用户重定向到相应的页面。

这是一个非常简单的策略,但它确实有效。

于 2013-04-19T01:30:35.413 回答