0

мое приложение rails является прокси-сервером для некоторых сервисов API обслуживания. Это означает, что все запросы для остальных серверов маршрутизируются через мое приложение rails. Я определил все требуемые маршруты в файле 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 отдыха на основе запроса параметры

ответ

2

Я думаю, что вы можете использовать подстановочные маршруты для you'r проблемы, как это:

# 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

@ адриан, ваше право. Я имел в виду случай. Я исправил свой код. – slowjack2k

+0

Итак, когда вы соглашаетесь с другой частью в инструкции switch, то как соответствовать динамическим данным? e.g- 'location /: location_id/search' – Sunny