Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何立即加载视图的一部分并延迟Rails中的其他部分?_Ruby On Rails - Fatal编程技术网

Ruby on rails 如何立即加载视图的一部分并延迟Rails中的其他部分?

Ruby on rails 如何立即加载视图的一部分并延迟Rails中的其他部分?,ruby-on-rails,Ruby On Rails,我有一个简单的视图,如下所示: %h1 Charts = high_chart "chart1", @chart1 h1和框架的其余部分需要200毫秒的加载时间,并且是相当静态的。但是,由于控制器进行了大量计算,图表加载需要10秒以上。因此,整个网页需要10秒才能加载,因为它正在等待图表计算完成 如何加载网页的其余部分(不包括图表),并在用户看到网页的其余部分时等待图表加载?解决方案之一是将high_图表部分提取到单独的视图中,并使用ajax加载。 因此,您的观点如下所示: %h1 Char

我有一个简单的视图,如下所示:

%h1 Charts

= high_chart "chart1", @chart1
h1
和框架的其余部分需要200毫秒的加载时间,并且是相当静态的。但是,由于控制器进行了大量计算,图表加载需要10秒以上。因此,整个网页需要10秒才能加载,因为它正在等待图表计算完成


如何加载网页的其余部分(不包括图表),并在用户看到网页的其余部分时等待图表加载?

解决方案之一是将high_图表部分提取到单独的视图中,并使用ajax加载。 因此,您的观点如下所示:

%h1 Charts
#highCharts
然后,假设您使用“/high_charts”返回high_charts部分,您可以在页面加载后立即向/high_charts发出ajax请求,并在得到响应时将其预先发送到#highCharts div:

$(function() {
  $.ajax({
    type: 'GET',
    url: '/high_charts',
    success: function(response) {
      $('#highCharts').prepend(response);
      // Initialize high_charts if needed
    }
  });
});

使用Jquery延迟加载。在您看来,为
h1
图表以外的所有其他部分编写代码。在您的图表控制器中,创建一个方法来渲染应该渲染图表的特定部分

class ChartsController
  def show_chart
    render 'chart_file',layout: false
  end
end
添加Jquery脚本,如下所示

$(document).ready(function()
{  $.ajax({
    url: '/chart_controller/show_chart',
    data: {},
    success:function(data){
      $("#chart_div").append(data);
    }
  });
}
所以,首先,这将以最少的内容加载rails视图,然后它将使用Ajax获取图表,因此它将是非侵入性的

在控制器和视图代码中进行必要的更改以使其正常工作

资源,


一旦AJAX完成,Highcharts Javascript库可能需要一些回调来呈现数据。这工作得很好,但是我当前从该页面得到的只是页眉和页脚,而我只需要图表。有没有办法只获取图表?我必须更改
/high\u charts
视图吗?没关系,找到了解决方案。但是,图表本身没有加载。搬到一个