0

my railsアプリケーションは、いくつかの残りの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' 
ように見えるされ、適切な休息のサービスコールにリダイレクト

各ルートについて別々の方法がある私はあなたのようにyou'r問題のために、ワイルドカードルートを使用することができると思う私は、さらにリクエストパラメータ

答えて

2

に基づいて正しい残りのURLを呼ぶような、単一の方法をしたいの代わりにそのことをコントローラに存在します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

あなたは 'case'を意味します、そうですか? – Adrian

+0

@adrianはい、あなたの権利。私は事実を意味した。私は自分のコードを修正しました。 – slowjack2k

+0

switch文の他の部分と一致するとき、動的データとのマッチング方法は?例: 'location /:location_id/search' – Sunny

関連する問題