搜索表单输入中的每个单词

时间:2019-02-24 23:05:20

标签: ruby-on-rails

我正在尝试打断输入中的每个单词,并在其中使用我的搜索查询。

我当前的搜索在我的控制器中使用以下内容

@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

在正确方向上的任何帮助将不胜感激。

谢谢

0 个答案:

没有答案