Ruby on Rails - 将输出打印到缓冲区

时间:2012-04-05 17:59:21

标签: ruby-on-rails ruby buffer helper

我有一个返回一个大型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,但我不知道它是如何工作的。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

更高版本的rails支持streaming,它可以有效地为您提供所需内容。

但是!小心你要求的是你需要的。使用firebug的网络标签查看页面加载所需的时间以及花费的时间。如果浏览器花了很长时间等待获取任何页面数据,那么也许流式传输可以帮助您。但是,请记住,要使用流式传输,您的代码也必须能够以块的形式生成HTML页面。这可能比你想象的更难 - 比如

<%= table_tag { render_huge_table } %>

无法使用。