2010-03-04 32 views
5

我想在控制器中呈現多個部分,這些部分不會成爲響應的一部分,而是通過Juggernaut推送給客戶端。我正在使用render_to_string在控制器中呈現多個部分

當第二個被調用時,我得到一個DoubleRenderError

如何渲染局部的performed?不會受到影響?

+1

原來'render_to_string'理清「渲染效果」,這樣你就可以調用它多次。問題是我已經調用了渲染器後,在'after_filter'掛鉤中調用了'render_to_string'。 – Leventix 2010-03-04 01:28:55

回答

4

原來render_to_string清除了「渲染結果」,所以你可以多次調用它。問題在於,在渲染已被調用之後,我在after_filter鉤子中調用了render_to_string。

1

等等,你怎麼能在after_filter鉤子中做到這一點?導致即時通訊運行到相同的問題,並必須做一個after_filter掛鉤。

順便說一句,使用了類似的情況即時推送技術,但隨着HTML 5周的WebSockets和EventMachine的

+0

嘗試在控制器操作的主要渲染調用之前,而不是在after_filter中。我查看了源代碼,並且render_to_string調用操縱響應,所以即使您操作'@ perform_render'變量,您也不應該在渲染後調用此響應。 – Leventix 2010-07-10 10:37:50

+0

你不能這樣做。我使用的是InheritedResources,因此after_filters是我想要的方式。 – taelor 2010-07-22 20:06:52