我有一条路线get '/catalog/:gender/' => 'catalog#gender'
。 :gender
param在我的控制器中使用,如@products = Product.where(gender: params[:gender]).all
。
因此,我可以使用/catalog/male/
获取所有男性产品,/catalog/female/
获取所有女性产品。问题是,有没有人可以传递male
和female
参数并获得所有产品?
答案 0 :(得分:1)
您可以通过/catalog/all/
获取所有产品,并在您的控制器中:
if params[:gender] == "all"
@products = Product.all
else
@products = Product.where(gender: params[:gender])
end
或渲染gender
参数可选get '/catalog(/:gender)'
,然后在您的控制器中:
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])
完成此解决方案的答案: