2010-03-04 3 views
5

컨트롤러에 여러 부분을 렌더링하고 싶습니다.이 부분은 응답의 일부가 아니며 대신 Juggernaut을 통해 클라이언트에 푸시됩니다.컨트롤러에서 여러 부분 렌더링하기

나는 render_to_string을 사용하고 있습니다.

두 번째 호출시 DoubleRenderError이 표시됩니다.

performed?이 영향을받지 않도록 부분적으로 렌더링하는 방법은 무엇입니까?

+1

와 그것은 당신이 여러 번 호출 할 수 있도록, "결과를 렌더링"오프 클리어 render_to_string''밝혀졌습니다. 문제는 렌더가 이미 호출 된 후'after_filter' 훅에서'render_to_string'을 호출 한 것이 었습니다. – Leventix

답변

4

"render_to_string"이 "렌더링 결과"를 지우므로 여러 번 호출 할 수 있습니다. 문제는 렌더가 이미 호출 된 후에 after_filter 훅에서 render_to_string을 호출했기 때문입니다.

1

대기 이렇게하면 after_filter 후크에서 어떻게 할 수 있습니까? 동일한 문제로 실행중인 메신저를 일으키고 after_filter 후크를해야합니다.

BTW, 비슷한 상황에서 메신저 사용하여 푸시 기술하지만, HTML 5 WebSocket을하고 eventmachine

+0

after_filter가 아닌 controller 액션에서 주 렌더링 호출 바로 앞에 놓습니다. 나는 소스 코드를 살펴 보았고 render_to_string 호출은 응답을 조작하므로'@ performed_render' 변수를 조작하더라도 렌더링 후에 이것을 호출하면 안됩니다. – Leventix

+0

나중에 할 수는 없습니다. InheritedResources를 사용하고 있기 때문에 after_filters는 내가 원하는 방식입니다. – taelor

관련 문제