我有一个浏览器调用的“长”任务。 我想要做的是创建一个动态进度条,在同一页面或灯箱中显示“幕后”任务的进度(不刷新页面)。
我的想法是使用这样的JQuery栏:http://docs.jquery.com/UI/API/1.8/Progressbar
我的问题是:
如何从任务(在lib /中)调用JQuery(或一般视图)来更新栏?
仅供参考我也使用ActiveAdmin,这不仅仅是问题,因为它使用预编译的视图。
答案 0 :(得分:2)
我会在控制器中创建一个新的REST操作(或理想情况下重用现有的操作)来为进度条提供信息。
我还会尝试在时间间隔使用JQuery使用Ajax调用控制器。
我认为这种面向进度条实现的方式比从lib任务调用视图更好。
这样的事情:
$(function() {
setInterval(updateProgressBar, 1000);
});
function updateProgressBar() {
//Invoke controller with ajax, and update progressBar
}
如果您不喜欢在客户端中使用轮询,您可能会在HTML5中找到有趣的服务器事件。
答案 1 :(得分:0)
这是前一阵子的帖子,但是如果它对某人有帮助,那么可以使用它。似乎不再需要维护它了,但这是如何实现所请求的行为的一个很好的例子: