0

我發現Rails會等待整個視圖在服務器上計算出來,然後纔會啓動響應並立即轉儲所有內容。理想情況下,頁面應該隨着服務器的運行而逐步填充。Flushing Rails模板輸出

爲了檢查這個,我做了一個新的Rails(4.1)項目,生成了一個虛擬資源,並在其視圖模板中添加了<%sleep 10%>。結果是什麼也沒有被輸出了10秒 - Chrome的網絡面板只顯示等待收到的零字節。也許這是因爲它是以開發模式運行的WEBrick,但我看到與Unicorn類似的事情(在開發和生產中)。

所以我的問題是如何確保內容在Rails中增量刷新。理想情況下,它應該自動發生(this post implies that's the intention回到Rails 3.1),但在這個簡單的例子中,沒有_content_for_),但如果有必要,我會願意添加一些flush()調用或其他。

+0

是[this](http://api.rubyonrails.org/classes/ActionController/Streaming.html)你在找什麼? (使用'render stream:true') – Amadan

+0

是的,就是這樣。我以前認爲流式傳輸僅適用於長時間運行的響應(即'live')。你可以添加這個作爲答案,我會接受它。 – mahemoff

回答

1

正如評論說,這是Rails中添加,但不是作爲默認:你需要通過指定觸發此行爲stream選項render

render stream: true 

此功能的文檔,可以發現here