我创建了一个包含产品手册的表格。我想允许用户根据三个下拉菜单(产品类型,运营商,概念)搜索表格。我已经创建了菜单,控制器当前正确地通过了参数。如果用户按所有3个条件搜索,则搜索会正确显示。但是,如果用户只选择一个或两个搜索选项,则结果始终为空。我理解为什么会发生这种情况(该模型试图通过所有三个标准进行搜索,当缺少一个时,它只是在该字段中搜索nil),但我确信正确的解决方案。请帮忙!我的模型如下......谢谢
def self.search (search_product_type, search_carrier, search_concept)
if search_product_type.blank? && search_carrier.blank? && search_concept.blank?
scoped
else
Ad.where(carrier_id: search_carrier)
.where(product_type_id: search_product_type)
.where(concept: search_concept)
end
end
答案 0 :(得分:1)
正如@Deefour在评论中所说,你应该使用宝石。但是,你也可以做这样的事情:
def self.search (search_product_type, search_carrier, search_concept)
if search_product_type.blank? && search_carrier.blank? && search_concept.blank?
scoped
else
tmp = {}
if search_carrier.present?
tmp[:carrier_id] = search_carrier
end
if search_product_type.present?
tmp[:product_type_id] = search_product_type
end
if search_carrier.present?
tmp[:concept] = search_concept
end
Ad.where(tmp)
end
end