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
视图吗?没关系,找到了解决方案。但是,图表本身没有加载。搬到一个