0

我创建了一个包含产品手册的表格。我想让用户根据三个下拉菜单(产品类型、运营商、概念)搜索表格。我已经创建了菜单,并且控制器当前正确地通过了参数。如果用户按所有 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
4

1 回答 1

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
于 2012-12-17T22:06:52.630 回答