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' 

對於每個路由有一個單獨的方法在控制,而不是存在我希望有一個單一的方法,這將進一步調用參數

回答

2

我認爲你可以使用通配符路線找你的問題像基於請求正確的休息網址這個:

# 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

你的意思是'case',對不對? – Adrian

+0

@adrian是的,你的權利。我的意思是案件。我確實糾正了我的代碼。 – slowjack2k

+0

因此,當你在switch語句中匹配另一部分時,如何與動態數據匹配?例如 - 'location /:location_id/search' – Sunny

相關問題