redirect_to! = return
의 동작에 대한 설명을 찾고 redirect_to
있습니다.
이 코드가 있습니다.
if some_condition
redirect_to(path_one)
end
redirect_to(path_two)
경우 some_condition == true
이 오류를 얻을 :
이 작업에서 렌더링 및 / 또는 리디렉션이 여러 번 호출되었습니다. 렌더링 또는 리디렉션을 호출 할 수 있으며 작업 당 최대 한 번만 호출 할 수 있습니다.
redirect_to
호출 후에도 메서드가 계속 실행되는 것 같습니다 . 다음과 같은 코드를 작성해야합니까?
if some_condition
redirect_to(path_one)
return
end
redirect_to(path_two)
예, 리디렉션을 수행 할 때 메서드에서 반환해야합니다. 실제로 응답 객체에 적절한 헤더 만 추가합니다.
더 루비 한 방식으로 작성할 수 있습니다.
if some_condition
return redirect_to(path_one)
end
redirect_to(path_two)
또는 다른 방법 :
return redirect_to(some_condition ? path_one : path_two)
또는 다른 방법 :
redirect_path = path_one
if some_condition
redirect_path = path_two
end
redirect_to redirect_path
에서 http://api.rubyonrails.org/classes/ActionController/Base.html :
어떤 조건에서 리디렉션해야하는 경우 "and return"을 추가하여 실행을 중지해야합니다.
def do_something
redirect_to(:action => "elsewhere") and return if monkeys.nil?
render :action => "overthere" # won't be called if monkeys is nil
end
당신은 또한 할 수 있습니다
redirect_to path_one and return
좋은 읽기.
이 예제에서와 같이 뒤에 코드 가 없으면 그럴 필요 가 없습니다 .return
redirect_to
def show
if can?(:show, :poll)
redirect_to registrar_poll_url and return
elsif can?(:show, Invoice)
redirect_to registrar_invoices_url and return
end
end
두 줄의 코드에 대한 Eimantas의 답변 에서 "rubyish way"예제를 통합하려면 :
return redirect_to(path_one) if some_condition
redirect_to(path_two)
메서드 또는 도우미 함수 내에서 리디렉션을 정의하고 컨트롤러에서 조기 반환하려면 :
ActionController :: Metal # performed? -렌더링 또는 리디렉션이 이미 발생했는지 테스트합니다.
def some_condition_checker
redirect_to(path_one) if some_condition
end
다음과 같이 호출하십시오.
some_condition_checker; return if performed?
redirect_to(path_two)
참고 URL : https://stackoverflow.com/questions/5743534/redirect-to-return
'Programing' 카테고리의 다른 글
모듈, 라이브러리 및 프레임 워크의 차이점 (0) | 2020.11.30 |
---|---|
스테이징 영역에서 디렉토리 하위 트리를 제거하려면 어떻게합니까? (0) | 2020.11.30 |
Django는 ManyToMany 카운트에서 모델을 필터링합니까? (0) | 2020.11.30 |
AlertDialog의 setCancelable (false) 메서드가 작동하지 않습니다. (0) | 2020.11.30 |
Postgresql 잘림 속도 (0) | 2020.11.30 |