0
到目前爲止,我已經設置了按價格範圍過濾所有產品,但我也有物品的銷售價格,並且我需要將銷售商品的銷售價格包含在精確的過濾範圍。使用filtering_params過濾價格範圍[「價格」]
例如,價格爲50美元的商品的銷售價格爲30美元,當我過濾範圍30美元至40美元時,我需要顯示此商品,但僅當過濾40美元至50美元時才顯示。
我在哪裏以及如何包含「sale_price」? (仍然是新和學習ROR)
在我listings_controller.rb文件我有:
@listings = Listing.filter(params.slice(:category, :price))
而且我有一個模型>關注> filterable.rb文件有:
module Filterable
extend ActiveSupport::Concern
module ClassMethods
def filter filtering_params
return self.all if filtering_params.empty?
if filtering_params["category"]
results = self.includes(:category).where(categories: { name: filtering_params["category"] })
elsif filtering_params["price"]
min = filtering_params["price"].split('-').first
max = filtering_params["price"].split('-').last
results = self.where("price >= :min AND price <= :max", min: min, max: max)
end
results
end
end
end
在此先感謝您的幫助。
似乎順理成章,但是,我得到這個錯誤:「PG :: UndefinedFunction:ERROR:功能分鐘(數字,數字)不存在」 – aep
當我將min =更改爲「min = filtering_params [」price,sale_price「]。split(' - ')。first」時,我現在得到一個錯誤:「未定義的方法'split'for nil:NilClass」。我應該把sale_price放在「min = ...」之外嗎?我需要把它定義在正確的地方嗎? – aep
感謝Finbarr的快速回復,我試過你的第二個選項,它過濾了,但仍然沒有過濾sales_price。 – aep