可以通过块将rails数据发送到浏览器块吗?

时间:2010-05-13 21:59:01

标签: ruby-on-rails

我有一个非常大的数据集(100,000)要显示,但是我尝试过的任何浏览器都包括chrome 5 dev,它会使它们窒息几十秒(win7 64bit,4gb,256gb ssd,c2duo 2.4ghertz)。

我做了一点实验

some_controller.rb

def show  @data =(1..100000).to_a 端

show.html.erb

 

就像扼杀浏览器一样简单。我知道浏览器从来都不是为此构建的,所以我想让数据按块进行分块,我猜每个块的2000是合理的,但我不想在每次调用这个视图时发出50个请求,任何想法?如果它可以一次性发送,它不必是块的块。

最佳,

2 个答案:

答案 0 :(得分:1)

实现这一目标的一种方法是使用render,传递一个proc。下面的代码片段来自Rails文档。

# Streams about 180 MB of generated data to the browser.
render :text => proc { |response, output|
  10_000_000.times do |i|
    output.write("This is line #{i}\n")
    output.flush
  end
}

http://api.rubyonrails.org/classes/ActionController/Base.html#M000658

答案 1 :(得分:1)

我确实看到了一个允许这种事情的插件,但我记不起它的名字了......会不停地拖着我的笔记。

与此同时,这就是分页:p

如果你的用例不支持,那么使用AJAX可以简化一些事情......可以使用AJAX逐步加载数据,无论是用户滚动还是自动滚动。

更新:找到了模板流式插件:http://github.com/oggy/template_streaming