2016-06-12 14 views
0

私はルートget '/catalog/:gender/' => 'catalog#gender'を持っています。 @products = Product.where(gender: params[:gender]).allのように、:genderのパラメータが使用されています。ルーティングパラメータに複数のパラメータを入れる方法はありますか?

だから、/catalog/male/を使ってすべての男性製品を取得し、を使ってすべての女性製品を取得することができます。問題は、誰かがおそらくmalefemaleの両方のパラメータを渡してすべての製品を入手できる方法でしょうか?

答えて

1

あなたはすべての製品を取得するために/catalog/all/を渡し、そしてあなたのコントローラでできます。

if params[:gender] == "all" 
    @products = Product.all 
else 
    @products = Product.where(gender: params[:gender]) 
end 

それともget '/catalog(/:gender)'オプションgenderのparamsをレンダリングしてから、コントローラで:

if params[:gender] 
    @products = Product.where(gender: params[:gender]) 
else 
    @products = Product.all 
end 

を答えを完了するには、Query stringも問題を解決できます。

ルート/catalog/を作成し、/catalog?gender[]=male&gender[]=femaleのような配列を送信してみましょう。このソリューションを完了するために

# params[:gender] = ["male", "female"] 
# SELECT "catalogs".* FROM "catalogs" WHERE "catalogs"."gender" IN ('male', 'female') 
@products = Catalog.where(gender: params[:gender]) 

回答:

+0

ありがとうございます。しかし、誰かがおそらくリンクにいくつかのパラメータを渡して、製品のいくつかのカテゴリを取得する可能性があるのだろうかと思っていました。答えは "いいえ"と思います。 – Viktor

関連する問題