3

私はレールが初めてで、その点についてはルビーです。Ruby 1.9.2 と Rails 3.1 に基づいて 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>?

4

1 に答える 1

0

ActionController::Streamingのドキュメントを見てください。ウィット:

ストリーミングは特定のテンプレートに簡単に追加でき:streamます。オプションを渡すだけです。

class PostsController
  def index
    @posts = Post.scope
    render :stream => true
  end
end

もちろん、詳細については残りのドキュメントをお読みください。

于 2011-10-21T13:40:35.307 に答える