2012-05-24 4 views
4

필터 전에 대상 메서드의 이름을 사용할 수있게 만드는 방법이 있습니까?before_filter에서 대상 메서드의 이름을 사용할 수 있습니까?

예를 들어, 나는

내가 그래서 내가 로그인에 명령을 전달할 수있는 show 문자열 또는 유사한 무언가를받을 수 이후 로그인 호출하는 다음 코드

before_filter :login 

def show 
    #... 
end 

def login 
    # ... 
    # get the name of method original called 
    # ... 
end 

http://<host>/show가 호출이 실제로 다른 컨트롤러에서 원래 대상 메서드로 돌아갑니다.

+2

'의 PARAMS [: 액션]'를? – apneadiving

+0

나는 지금 막 시도하고있다, before_filter에 param 매개 변수를 사용할 수 있으며 대상 메서드는 동작인가? – zode64

+1

우물 : 여기에 2 개의 예스가 있습니다 – apneadiving

답변

6

당신은 단순히 PARAMS에서 작업을 얻을 수 : params[:action]

1

@apneadiving에서 언급했듯이 params[:action]에 액세스하여 "대상"(예 : "s" 방법 ","색인 "등). 주의

한 단어, 때로는 params 이상한 동작이 발생할 수 있습니다 사용 (내가 과거에 이런 짓을했기 때문에 일반적으로 before_filters 당신은. 내가 정확한 이상한 행동을 기억하지 않는 대신 paramsrequest.params를 사용한다는 것입니다 그러나 그것은 이상적이지 않았다). 또한 매개 변수를 업데이트하는 경우 params[:key] = value과 같은 작업을 수행하는 대신 request.params에 병합해야합니다.

+0

params를 업데이트하는 것은 나쁜 습관입니다. 절대 그렇게해서는 안됩니다. –

+0

사실 나는 괜찮다고 생각합니다. 그들을 위생 처리해야 할 수도 있고, 아니면 다른 행동을 위해 params를 준비 중일 수도 있습니다. – MrDanA

관련 문제