开发模式下 Rails 3.2 的请求处理顺序

Order of request handlings with Rails 3.2 in development mode

本文关键字:请求处理 顺序 模式 Rails 开发      更新时间:2023-09-26

我有一个页面,在异步加载动态内容时显示微调器动画(此处为 HAML):

#loading_spinner
#async_vote
:javascript    
  $(document).ready(function() {
    $.ajax({
      url: "/votes/voteables",
      cache: false,
      beforeSend: function(xhr){
        $("#loading_spinner").show();
      },
      success: function(html){
        $("#loading_spinner").hide();
        $("#async_vote").html(html);
      }
    });
  });

为了模拟慢速请求,我在 :voteables -方法中设置了几秒钟的睡眠时间。

现在,问题是浏览器不显示#loading_spinner元素的background-image

发生的情况是,尽管JavaScript代码应该在加载页面时执行,但它实际上在获取微调器的背景图像之前执行AJAX调用。因此,当控制器中的延迟为 3 秒时,图像会立即加载(因为请求不是并行处理的),执行 success -回调并立即隐藏图像。

我正在使用 Rails 3.2 并使用 rails server 运行该应用程序。

任何建议如何在开发中解决此问题?这会成为生产中的问题吗?

我认为如果您将 ajax 请求包装在加载中而不是准备就绪,它会在下载图像之前不会执行,如下所示:

$(window).load(function(){
  // ajax functionality goes here
});