我应该如何在Rails中向用户表明长时间的请求?

时间:2013-10-01 07:10:16

标签: ruby-on-rails httprequest

我有一个带有庞大数据库(数百千兆字节)的rails应用程序,它有很多不同的选项如何处理数据。在某些情况下,比如更改数据,这可以在我使用Sidekiq的后台任务中完成。但在其他情况下,比如查看包含大量行和列的数据或复杂的SQL查询,获取数据的过程需要很长时间。

我想要做的是向用户显示点击链接时发生的事情。就像许多浏览器的进度条一样,但更明显,所以即使不习惯使用浏览器的用户也应该看到正在发生的事情和加载。

问题是如何做到这一点。我已经尝试过使用AJAX和jQuery的不同选项,但大多数时候我只能针对某些操作执行此操作,但基本上我想为整个应用程序执行此操作。因此,每次用户发送加载新页面的请求时,我都想立即向他显示正在发生的事情。

我最接近的是Javascript,它总是被触发。问题是它确实每次都发生并被迫重新加载页面。这意味着当我切换一个元素时,它会显示进度条,然后重新加载页面。

从本质上讲,我正在寻找:

我的应用程序在Ruby和Rails 4上运行,每次加载新页面时我都希望用户显示他的请求正在被处理,所以即使请求需要几秒钟,用户也不会感到紧张因为他知道事情正在发生。

我真的很感激找到解决方案的任何帮助,因为我似乎无法找到任何解决方案......

1 个答案:

答案 0 :(得分:0)

您应该使用javascript动画向用户显示正在发生的事情。

例如:http://ricostacruz.com/nprogress/