2012-07-27 4 views
0

컨트롤러의 부모 클래스에 메서드가 있습니다. 대부분의 메소드에서 before_filter (require_user)로 사용되지만 helper_method와 같이 호출해야합니다. 그렇게하면 메서드가 즉시 호출되지 않고 비동기 적으로 호출됩니다.일반 도우미 메서드로 "필터"메서드 사용

왜 이런 일이 발생하는지 이해가되지 않습니다. 컨트롤러와 실제 세션에서 오류 메시지에 대한

예제 코드는 어떤 도움에 감사드립니다 여기 https://gist.github.com/3187671

있습니다. 감사!

편집 : 방금이 게시물이 발견되었으므로 작동하지 않아야합니다. 도우미를 비동기 적으로 호출하는 이유를 설명하지 않습니다. http://www.markhneedham.com/blog/2011/01/11/rails-using-helpers-inside-a-controller/

답변

0

redirect_to 또는 render 메서드는 메서드 실행을 중단하지 않습니다. 둘 중 하나만 호출해야하는 경우 (그렇지 않으면 Rails가 DoubleRenderError를 발생시킵니다. guide 2.2.13 참조). 이것이 코드 redirect_torequire_user에 의해 호출되고 다음에 render이 호출되는 문제입니다.

+0

감사합니다. @Baldrick 로그 메시지가 직렬로 출력되지 않는 이유는 아직도 이해할 수 없습니다. 나는 그것이 컨트롤러의 show 메소드로 돌아 오기 전에 require_user 메소드 내에서 메시지를 얻을 것이라고 생각한다. require_user가 내가 기대할 때 실행되지 않기 때문에 필자가 require_user에서 무엇을했는지는 중요하지 않습니다. – Greg

+0

신경 쓰지 마라 .. 동기가있는 물건은 단지 내가 우키 한 로그를 가지고 있었다. 실행을 멈추는 방법을 알아 내야합니다. 렌더와 리턴이 기대됩니다.하지만 호출 메소드로 돌아가는 것 같습니다. 정확히 어떤 일이 일어나기를 원하지 않습니다. – Greg

+0

@Greg 레일스가 로그 메시지를 인쇄하는 방식 일 수 있습니다. 실행 스트림을 확인하기 위해 타임 스탬프 또는 증가 된 전역 변수를 사용하십시오. – Baldrick

관련 문제