我是rails的新手,也是ruby。我已经建立了一个基于ruby 1.9.2和rails 3.1
的rails应用程序我遇到了一个问题,可能是我对rails中的流实现有所了解。在我看来,在rails将呈现模板内容之前,它必须完成评估它的过程。
比方说,我有一个像以下
这样的cgi脚本#!/bin/sh
cat <<END
Content-Type: text/html
END
for i in {1..10}
do
echo $i
sleep 1
done
这将在浏览器中按顺序显示从1到10的数字,因为它们是由脚本呈现的,而不是一次性显示。这是我想在rails视图中模拟的行为。
假设我在视图中有以下内容。
<h1> hi </h1>
<%
sleep 5
%>
<h2> bye </h2>
它将等到睡眠5完成后再显示任何内容。
使用curl -i观察来自Web服务器的响应我立即按预期获得响应头,其中包含Transfer-Encoding:按预期分块。但是,在睡眠完成之前,它不会渲染身体内容。
我需要做什么才能以与我上面粘贴的简单cgi脚本相同的方式呈现正文内容?具体来说,首先<h1> hi </h1>
然后5秒后<h2> bye </h2>
?
答案 0 :(得分:0)
查看ActionController::Streaming的文档。即:
可以轻松地将流式传输添加到给定模板,您只需传递
:stream
选项。class PostsController def index @posts = Post.scope render :stream => true end end
当然,您需要阅读其余文档以获取详细信息。