0

내 레일 응용 프로그램은 일부 나머지 API 서비스의 프록시 서버입니다. 나머지 서버에 대한 모든 요청이 내 레일 응용 프로그램을 통해 라우팅된다는 의미입니다. 내 routes.rb 파일에 필요한 모든 경로를 정의했으며 내 컨트롤러의 각 경로마다 다른 방법을 작성했습니다. 그래서 그 대신 내가 원하는 각 경로에 대해 서로 다른 방법 나는 request.fullpath을 확인하고 요청 매개 변수에 따라 수 있습니다 내 컨트롤러에 하나의 방법은 여기여러 경로를 처리하는 단일 메서드를 추가하는 방법

내 경로가

get '/lookup/location/search', to: 'ticketing#lookup_location_search' 
    get '/lookup/company/search', to: 'ticketing#lookup_company_search' 
    get '/lookup/assignmentGroup/search', to: 'ticketing#lookup_assignment_group_search' 
    get '/lookup/ci/search', to: 'ticketing#lookup_ci_search' 
    get '/lookup/user/search', to: 'ticketing#lookup_user_search' 
과 같이되어 적절한 휴식 서비스 호출로 리디렉션 각 경로에 대한

는 별도의 방법은 내가 더 정확한 나머지 요청에 따라 URL 난 당신이 같은 you'r 문제에 대한 와일드 카드 경로를 사용할 수 있다고 생각

답변

2

매개 변수를 호출 할 하나의 방법을 원하는 대신에의 컨트롤러에 존재하는이 this :

# routes.rb 
get '/lookup/*other_parts', to: 'ticketing#proxy_action' , format: false 
# maybe with constraints 
# get '/lookup/*other_parts', to: 'ticketing#proxy_action' , format: false, constraints: { other_parts: /.../ } 

# within your controller 
def proxy_action 
    case params[:other_parts] 
    when 'location/search' 
     ... 
    when 'assignmentGroup/search' 
     ... 
    ... 
    else 
     ... 
    end 
+0

'케이스'를 의미합니까? – Adrian

+0

@adrian 예, 당신의 권리. 나는 사건을 저질렀다. 나는 내 코드를 수정했다. – slowjack2k

+0

switch 문에서 다른 부분과 일치 할 때 동적 데이터와 일치시키는 방법은 무엇입니까? 예 : 'location/: location_id/search' – Sunny