我构建了一个基本的Sinatra / Mongodb支持的API,并试图找出如何根据通过URL传递的params来过滤结果。
我的产品类:
class Product
include Mongoid::Document
include Mongoid::Timestamps
field :p_id, type: Integer
field :_id, type: Integer, default: -> { p_id }
field :title, type: String
field :price, type: BigDecimal
field :url, type: String
field :upc, type: Integer
field :bundle, type: Boolean
field :var, type: Boolean
end
我当前显示所有产品的路线:
#localhost:9292/products
get '/products' do
@products = Product.all
rabl :products
end
如何根据用户发送的参数过滤显示的产品。例如,如果请求的网址是localhost:9292/products/&bundle=1
我想只显示包含true的产品,或者请求的网址是localhost:9292/products/&bundle=1&var=0
我想要显示其中bundle为true且var为false的产品。
答案 0 :(得分:1)
只需使用链接:
@products = Product.all
@products = @products.where(bundle: true) if params[:bundle] == '1'
@products = @products.where(var: false) if params[:var] == '0'