2013-12-05 2 views
0

Я построил базовый API с поддержкой Sinatra/Mongodb и попытаюсь выяснить, как фильтровать результаты на основе параметров, передаваемых через URL-адрес.Параметры интерфейса Sinatra от URL-адреса

Мой класс продукта:

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 

Как я могу фильтровать, какие продукты отображаются в зависимости от того, что Params пользователь посылает. Например, если запрашиваемый URL-адрес равен localhost:9292/products/&bundle=1 Я хочу показать только те продукты, где bundle true, или если запрошенный url равен localhost:9292/products/&bundle=1&var=0 Я хочу отображать продукты, где bundle true, а var - false.

ответ

1

Просто используйте цепочки:

@products = Product.all 
@products = @products.where(bundle: true) if params[:bundle] == '1' 
@products = @products.where(var: false) if params[:var] == '0' 
Смежные вопросы