【发布时间】:2014-02-11 13:26:51
【问题描述】:
我有一个带有过滤器的页面,但它不能正常工作,如果设置了所有过滤器,它就可以工作。 但是,如果未设置类别过滤器并且设置了其他两个过滤器,它将不起作用(它显示所有产品)。与之前一样,如果设置了类别并且再次设置了价格不是库存,则显示仅按类别过滤的内容。 我的模型是product.rb
def self.categorized(category=nil)
return self.where("category_id LIKE ?",category ) if category
self
end
def self.priced(price=nil)
return self.where("price < 50") if price=="low"
return self.where("price < 100 and price > 50") if price=="mid"
return self.where("price > 100") if price=="high"
self
end
def self.stocked(stock=nil)
return self.where("stock > 0") if stock=="available"
return self.where("stock = 0" ) if stock=="out"
self
end
def self.catalog(params)
page = params[:page]
category = params[:category]
stock = params[:stock]
price = params[:price]
self.stocked(stock).priced(price).categorized(category)
.paginate(:page =>page).limit(9)
end
【问题讨论】:
-
删除自我后尝试。在 self.price 和 self.stocked 内
-
@Thahakp 这会破坏链接,不会工作
-
像这样... def self.price(price=nil) where("price 50") if price=="mid" where("price > 100") if price=="high" end
-
如果你想链接你必须使用范围。
-
@Thahakp,不,您不必“必须”,这是另一种选择。 (我同意范围可能更像 Rails,但从技术上讲,OP 所做的还可以。)
标签: ruby-on-rails