[RUBY-ON-RAILS] 컨트롤러에서 다른 컨트롤러 액션을 호출 난간
RUBY-ON-RAILS컨트롤러에서 다른 컨트롤러 액션을 호출 난간
나는 컨트롤러 B.에서, 컨트롤러 A의 생성 조치를 호출 할 필요가
그 이유는 내가 컨트롤러 B. 인데요 때 다르게 리디렉션 필요가있다
그것은 레일에서 수행 할 수 있습니까?
해결법
-
==============================
1.당신은 그 행동을 리디렉션을 사용할 수 있습니다 :
당신은 그 행동을 리디렉션을 사용할 수 있습니다 :
redirect_to your_controller_action_url
더에 : 레일 가이드
단지 새로운 액션을 렌더링하려면 :
redirect_to your_controller_action_url and return
-
==============================
2.서로 하나의 컨트롤러를 사용하려면 다음을 수행하십시오
서로 하나의 컨트롤러를 사용하려면 다음을 수행하십시오
def action_that_calls_one_from_another_controller controller_you_want = ControllerYouWant.new controller_you_want.request = request controller_you_want.response = response controller_you_want.action_you_want end
-
==============================
3.당신이 제시 논리는 MVC, 다음하지 레일, 호환되지 않습니다.
당신이 제시 논리는 MVC, 다음하지 레일, 호환되지 않습니다.
이러한 고려에서, 나는 컨트롤러의 메소드를 만들 수 조언 액션에서 호출.
예:
def index get_variable end private def get_variable @var = Var.all end
즉, 다른 컨트롤러를 통해 동일 할 당신이 컨트롤러 B.에있는 동안 컨트롤러 A에서 방법을 소환 할 수 말했다
어휘 내가 많이 주장하는 이유가 매우 중요합니다.
-
==============================
4.당신은 컨트롤러와 액션에 대한 URL을 얻을 url_for를 사용하고 해당 URL로 이동 redirect_to를 사용할 수 있습니다.
당신은 컨트롤러와 액션에 대한 URL을 얻을 url_for를 사용하고 해당 URL로 이동 redirect_to를 사용할 수 있습니다.
redirect_to url_for(:controller => :controller_name, :action => :action_name)
-
==============================
5.이것은 또 다른 컨트롤러 액션을 호출하는 나쁜 관행입니다.
이것은 또 다른 컨트롤러 액션을 호출하는 나쁜 관행입니다.
당신은해야
내 의견 :
그래서 당신은 당신이 원하는 경로가 될 수있는이 액션 redirect_to의 PARAM로 보낼 수 있습니다.
-
==============================
6.아마도 로직은 도우미로 추출 할 수 있을까? 헬퍼는 모든 클래스가 사용할 수있는 제어를 전송하지 않습니다. 당신은 호출 방식을 볼 수 있습니다, 아마도 컨트롤러 이름을, 그 안에 확인할 수 있습니다.
아마도 로직은 도우미로 추출 할 수 있을까? 헬퍼는 모든 클래스가 사용할 수있는 제어를 전송하지 않습니다. 당신은 호출 방식을 볼 수 있습니다, 아마도 컨트롤러 이름을, 그 안에 확인할 수 있습니다.
-
==============================
7.구조로 구성!
구조로 구성!
오히려 하나가 코드의 공유 및 사용자 정의 부분을 분리해서하는 컨트롤러를 설계해야 컨트롤러에 걸쳐 작업을 호출하는 것보다, 이유를 감안할 때. 이 둘을 방지하는 데 도움이 될 것입니다 - 코드 중복 및 파괴 MVC 패턴을.
이이 문제 (구성)를 사용하여, 여러 가지 방법으로 수행 할 수 있지만 좋은 연습입니다.
# controllers/a_controller.rb class AController < ApplicationController include Createable private def redirect_url 'one/url' end end # controllers/b_controller.rb class BController < ApplicationController include Createable private def redirect_url 'another/url' end end # controllers/concerns/createable.rb module Createable def create do_usefull_things redirect_to redirect_url end end
희망이 도움이.
-
==============================
8.다음과 같이 당신은 행동 안에 다른 조치를 호출 할 수 있습니다 :
다음과 같이 당신은 행동 안에 다른 조치를 호출 할 수 있습니다 :
redirect_to 액션 'ACTION_NAME'
class MyController < ApplicationController def action1 redirect_to action: 'action2' end def action2 end end
-
==============================
9.컨트롤러에서 이러한 기능을 분리하고 모델 파일에 넣어. 그런 다음 컨트롤러에서 모델 파일을 포함한다.
컨트롤러에서 이러한 기능을 분리하고 모델 파일에 넣어. 그런 다음 컨트롤러에서 모델 파일을 포함한다.
from https://stackoverflow.com/questions/5767222/rails-call-another-controller-action-from-a-controller by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 3 모델없이 사용자 정의 SQL 쿼리를 실행 레일 (0) | 2020.02.11 |
---|---|
[RUBY-ON-RAILS] 포맷 날짜를 레일 (0) | 2020.02.11 |
[RUBY-ON-RAILS] 파괴와 삭제의 차이 (0) | 2020.02.11 |
[RUBY-ON-RAILS] ActionController :: InvalidAuthenticityToken (0) | 2020.02.11 |
[RUBY-ON-RAILS] 3 레일 : 여러 선택은 협회를 통해 has_many와 함께 (0) | 2020.02.11 |