0

我有一个返回一个大 HTML 字符串的大方法。这是非常无效的,并且浏览器需要很长时间才能一次加载所有 HTML。我的问题是:Ruby on Rails 是否有办法将部分 HTML 打印到缓冲区,所以它不会一次全部完成?

这就是我的意思:

module TestHelper
    def my_method
        output = ""
        output += "<div>"
        output += "<span>Test</span>"
        output += "</div>"
        return output
    end
end

但我想知道我是否可以这样做:

module TestHelper
    def my_method
        print_to_page "<div>"
        print_to_page "<span>Test</span>"
        print_to_page "</div>"
    end
end

我的问题在于如何以不同的方式或“正确”的方式来做,我这样做是有原因的。我已经在网上搜索并阅读了相关信息,with_output_buffer但我不知道它是如何工作的。有什么建议么?

4

1 回答 1

-1

更高版本的 rails 支持流式传输,这有效地为您提供所需的内容。

但!请注意,您所要求的就是您所需要的。使用firebug的 net 选项卡查看页面加载需要多长时间,以及时间花在了哪里。如果浏览器花费特别长时间等待获取任何页面数据,那么流式传输可能会对您有所帮助。但是,请记住,要使用流式处理,您的代码还必须能够以块的形式生成 HTML 页面。这可能比你想象的要难——比如

<%= table_tag { render_huge_table } %>

不能使用。

于 2012-04-05T19:46:46.623 回答