我正在尝试打断输入中的每个单词,并在其中使用我的搜索查询。
我当前的搜索在我的控制器中使用以下内容
@stock_search = StockItem.search(params[:search])
.select("stock_items.id,stock_items.product_code, stock_items.desc1, stock_items.cost_sop, stock_items.price, stock_items.price1, stock_items.price2, stock_items.price3, stock_items.price4, stock_items.price5, stock_items.del_price, stock_items.del_price1, stock_items.del_price2, stock_items.del_price3, stock_items.del_price4, stock_items.del_price5, stock_items.qty_free, suppliers.name, max(a.date_invoice) as date_last")
.joins("INNER JOIN suppliers ON supplierscompany = stock_items.company and stock_items.main_supplier = suppliers.supplier_code")
.joins("LEFT outer JOIN invoice_details a ON stock_items.company = a.company
and stock_items.product_code = a.part and a.del_account = '#{@customer.account}'")
.where("stock_items.depot = '#{@customer.depot}'")
.group("stock_items.id,stock_items.product_code, stock_items.desc1, stock_items.cost_sop,
stock_items.price, stock_items.price1, stock_items.price2, stock_items.price3, stock_items.price4, stock_items.price5, stock_items.del_price, stock_items.del_price1, stock_items.del_price2, stock_items.del_price3, stock_items.del_price4,
stock_items.del_price5, stock_items.qty_free,
suppliers.name")
.page(params[:page]).per(10)
我的模型使用以下
def self.search(search)
if search
where('stock_items.depot = ? and (lower(product_code) like lower(?) OR lower(desc1) like lower(?) or lower(main_mpn) like lower(?) or lower(search_keywords) like lower(?))',"01", "%#{search.downcase}%","%#{search.downcase}%","%#{search.downcase}%", "%#{search.downcase}%")
else
where('product_code=?','x')
end
end
我正在尝试更改模型,以使其遍历搜索表单中的每个单词并创建一个where行,但我似乎无法使其正常工作,相反(在开发日志中)似乎可以做到查询每个单词,但在视图中不返回任何结果。
这是我到目前为止所拥有的
def self.search(search)
if search
str = ""
search.split.each do |s|
a = where("(lower(product_code) like lower(?) OR lower(desc1) like lower(?) or lower(main_mpn) like lower(?) or lower(search_keywords) like lower(?))", "%#{s}%", "%#{s}%", "%#{s}%", "%#{s}%")
str = (str + a)
end
return str
else
where('product_code=?','x')
end
end
在正确方向上的任何帮助将不胜感激。
谢谢