如何在页面之间显示页面加载

时间:2015-07-19 20:13:30

标签: ruby-on-rails ruby-on-rails-4 heroku

我不确定所有Rails应用程序的行为是否相同,或者只是在我的应用程序设置中。对于我的应用程序,当一个页面加载时(所以当点击一个链接直到从服务器响应内容的那一刻),根本没有指示页面加载。在页面加载期间的一般网站中,在图标的位置将存在旋转轮以显示页面正在加载。我在 Heroku 上使用 Rails 4.0.0

3 个答案:

答案 0 :(得分:6)

Rails默认使用turbolinks。

请看看turbolinks以及它是如何工作的。它基本上取代了页面的主体,而不是发出新的请求,这就是为什么你没有在浏览器中看到加载指示。

如果要查看页面加载,可以禁用turbolinks,将其从application.js中删除,或使用类似这样的gem:https://github.com/caarlos0/nprogress-rails来显示页面的实际加载。

我强烈建议你继续使用turbolinks并选择我给你的第二个选项。

答案 1 :(得分:6)

来自Turbolinks,类似于什么?

$document.on('page:fetch', function() {
  // show spinner
});

$document.on('page:change', function() {
  // hide spinner
});

Turbolinks 5的更新

Turbolinks 5

$document.on('turbolinks:click', function() {
  // show spinner
});

$document.on('turbolinks:load', function() {
  // hide spinner
});

如果您使用的是jQuery并且您的微调器位于div.spinner中,您可以使用以下命令显示和隐藏它:

$(document).on("turbolinks:click", function(){
  $(".spinner").show();
});

$(document).on("turbolinks:load", function(){
  $(".spinner").hide();
});

答案 2 :(得分:1)

这些网站大多数时候都是我们所说的单页应用程序。这些站点使用了大量基于AJAX的内容提取机制,这与前端编程和后端编程有一点关系。

如果您真的想要实现此功能,可以使用AngularJS,BackboneJS以及支持单页Web应用程序的其他框架。

当您获取另一个页面表单服务器时,您的所有HTML,CSS和JS都消失了,并且会获取并呈现新内容。因此,除非使用基于AJAX的页面,否则无法在中间显示加载页面。