如何添加单个方法来处理多个路由

How to add single method to handle multiple routes

我的 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

我认为你可以使用通配符路由来解决你这样的问题:

# 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