2014-03-26 52 views
0

它將搜索寫完整的單詞,因爲它只是我想顯示所有那些從它開始的單詞的結果。像打字親應該顯示以親像產品1,產品2等使用MongoDB在rails中搜索4

這裏是我的產品控制器的index action 高清指數

if params[:search] 
    @products = Product.search(params[:search]).order("created_at ASC") 
    else 
    flash[:alert]= "No matches Found." 
    @products = Product.all 
    end 

型號

的所有單詞後
class Product 
include Mongoid::Document 

embeds_many :brands 
field :name, type: String 
field :description, type: String 
field :price, type: Float 


def self.search(query) 
    any_of({name: query}) 
end 
end 

請幫我定義一個合適的搜索。

回答

1

您可以使用正則表達式搜索此。至於,

Product.any_of(name: /^pro/) #all products starting with "pro" 
Product.any_of(name: /pro$/) #all products ending with "pro" 
Porduct.any_of(name: /pro/) #all products having "pro" anywhere in name 
+0

但是當我寫any_of({名稱:/ ^查詢/}),它不會找到你的情況下,任何產品 – dips

+0

查詢是沒有什麼只是一個變量。所以您需要以'Product.any_of(name:/ ^#{query} /)'這樣的方式進行查詢以獲得所需的結果。 – r3bo0t

+0

工作...謝謝...但是當我搜索一個不存在的字,然後顯示閃存味精「沒有找到匹配」,但它不會顯示所有產品。爲什麼會發生? – dips