2016-05-16 14 views
0

私は見回しましたが、API経由でクエリを実行するとこのようなものは見つかりませんでした(これはiOSアプリケーションのバックエンドです)。このようなルートます複数のレコードをレールで照会するAPI

localhost:3000/api/products/52,53,67,78,etc... 

をそして、このクエリは、IDS 52、53、67、78、これまで他のIDが記載されていた製品を返します。現在、私のような正規ルートがあります。

localhost:3000/api/products/52 

を、これは正しく私のルートは現在、次のようになり52のAPIで製品を検索します:任意の助け

namespace :api, defaults: {format: :json} do 
scope module: :v1 do 
    resources :products, only: [:index, :show, :destroy, :create] do 
    resources :reviews, only: [:index] 
    end 
    get '/search/products', to: "products#search" 
    resources :categories, only: [:index, :show] 
    resources :charges, only: [:create] 
    resources :customers, only: [:create] 
    resources :users, only: [:create, :show] 
    resources :accounts, only: [:create] 
    post '/login', to: "sessions#create" 

end 
end 

感謝。

答えて

2

idsをparamsで配列として送信するだけではどうですか?

のparamsとHTTPクエリ(またはx-www-form-urlencoded recommenedとして送信する):

localhost:3000/api/products?ids[]=52&ids[]=53&ids[]=67... 

そしてexmpleのアクションで:

def index 
    products = Product.where('id IN (?)', params[:ids]) 
    if products.any? 
     render json: { success: true, products: products } 
    else 
     render json: { success: false, products: products } 
    end 
    end 
+0

を私はJSONとしてすべての要求をコード化する、と私は修正するiOSアプリで設定したルータを台無しにしたくない:版、お使いのコントローラのコードは、他の人の答えが提案されたものよりも、短くすることができます特定のリクエストに対してのみ例外を作成し、JSONを使用するGETリクエストでパラメータを送信することはできません – joey

+0

'x-www-form-urlencoded'として送信します –

関連する問題