2012-05-28 3 views
0

У меня есть модель замещения вакансий, и я хочу реализовать функцию поиска, которая должна быть поиск по ключевым словам, т.е. я имею в виду, даже если вы вводите любое ключевое слово в поиске, и если оно присутствует в db таблицы рабочих мест, оно должно показывать результаты.Функция поиска в рельсах

В настоящее время я использую следующий код, который просто соответствует 1 полю, т.е. названия компании и категорию, как и в Params [: категория] является тх Следуя за кодом моего jobplacementcontroller/индекс действия

if params[:search] 
     @search_condition = "%" + params[:search] + "%" 
     @searchresult = Jobplacement.where(['name LIKE ? and category = ?', @search_condition ,params[:category]]) 
else 
    @searchresult = "" 
end 

Также в вышеприведенном коде, хотя я дал условие для категории, которое оно не выполняется должным образом. Когда я выполняю поиск, он дает результаты, которые соответствуют полю поля, но его не оценивающие параметры [: category] condition.it показывают все записи, даже если они не находятся в Титулы [: категория].


Ниже приведены поля в моей jobplacement модели:

t.string "name" 
t.string "designation" 
t.string "qualification" 
t.integer "years_of_exp" 
t.string "location" 
t.integer "noofpost" 
t.string "jobprofile" 
t.string "salaryoffered" 
t.string "contactperson" 
t.string "employmenttype" 
t.text  "address" 
t.string "city" 
t.string "state" 
t.string "country" 
t.integer "contactno" 
t.string "website" 
t.text  "aboutcompany" 

так, когда я ввести любое ключевое слово в поиске, если это совпадает с данными любого поля он должен вернуться, что data.How может я сделайте это ... Как я могу решить эту ошибку params [: category] и как я могу выполнить поиск по ключевым словам, который соответствует любой записи, присутствующей в базе данных модели замещения, а не только 1 поле.

ответ

0

чек из Thinking Sphinx, он имеет решения ваших проблем и имеет больше возможностей, как к югу строки поиска, диком поддержку полукокса и более

0

используя squeel камень http://erniemiller.org/projects/squeel/ вы можете просто сделать:

terms = params[:search].split 
Jobplacement.where {name.eq(params[:category]) & (name.like_any(terms) | designation.like_any(terms) | qualification.like_any(terms) <...>) }