Rails动态进度条从运行任务

时间:2012-12-03 00:23:23

标签: jquery ruby-on-rails-3 progress-bar activeadmin

我有一个浏览器调用的“长”任务。 我想要做的是创建一个动态进度条,在同一页面或灯箱中显示“幕后”任务的进度(不刷新页面)。

我的想法是使用这样的JQuery栏:http://docs.jquery.com/UI/API/1.8/Progressbar

我的问题是:

如何从任务(在lib /中)调用JQuery(或一般视图)来更新栏?

仅供参考我也使用ActiveAdmin,这不仅仅是问题,因为它使用预编译的视图。

2 个答案:

答案 0 :(得分:2)

我会在控制器中创建一个新的REST操作(或理想情况下重用现有的操作)来为进度条提供信息。

我还会尝试在时间间隔使用JQuery使用Ajax调用控制器。

我认为这种面向进度条实现的方式比从lib任务调用视图更好。

这样的事情:

$(function() {
  setInterval(updateProgressBar, 1000);
});
function updateProgressBar() {
  //Invoke controller with ajax, and update progressBar
}

如果您不喜欢在客户端中使用轮询,您可能会在HTML5中找到有趣的服务器事件。

答案 1 :(得分:0)

这是前一阵子的帖子,但是如果它对某人有帮助,那么可以使用它。似乎不再需要维护它了,但这是如何实现所请求的行为的一个很好的例子:

https://github.com/d4be4st/progress_job