2010-12-15 2 views
1

레일스 2.3.8에서 기본 before_filter 작업을 수행하려고합니다. 개별 컨트롤러에서 이러한 작업을 수행하면 작동하지만 이제는 내 ApplicationController에서이 작업을 수행하려고합니다. 나는이 기대하고있어레일스가 ApplicationController 내 필터 정의를 무시합니다.

class ApplicationController < ActionController::Base 

    before_filter :hello 

private 

    def hello 
     puts "HELLO!" 
    end 

end 

은 내 다른 컨트롤러 클래스에 전혀 필터를 참조 할 필요없이, 내 컨트롤러 액션의 어떤을 실행하기 전에 안녕하세요 실행이 발생할 수 있습니다. 그러나 그것은 그것을 무시하는 것처럼 보입니다 (절대로 '안녕하세요'라고 부르지 마십시오) 왜 그럴 수 있습니까? 3.

+0

왜 필터가 호출되지 않았다고 생각하십니까? 그냥 필터를 리디렉션하거나 필터의 전체 코드를 게시 할 장소를 테스트하기 위해 – Bohdan

+0

글쎄, 난 그냥 "안녕하세요!" 출력 (webrick이 실행중인 터미널에서 예상 됨)에 오류가 발생하는 줄을 추가했지만 아무것도 표시하지 않았습니다. –

답변

1

다른 모든 컨트롤러와 ApplicationController에서 상속해야

0

나는이 도움이되지 않습니다 알고 있지만, 코드가 레일에 불구하고, 정확하고 나는 그것을 테스트 할 때 작동 그래서 예를 들면 :

class MyOtherController < ApplicationController 

ApplicationController 만 ActionController :: Base에서 상속해야합니다.

다른 컨트롤러도 ActionController :: Base로부터 상속 받겠다고 선언했기 때문에 Rails가 필터를 무시하고있었습니다.

적어도 이것은 분명하다고 생각했지만이 Action Controller Overview guide을 읽으면 ActionController :: Base에서 상속 한 다른 컨트롤러의 예제 (일부 경우)를 제공합니다. 그래서 혼란 스럽습니다. 어떤 경우에는 항상 ActionController에서 상속하면 내 문제가 해결됩니다

관련 문제