Forum: Ruby on Rails advance search using pg_search gem passing three, two, one o nome parameters.

A4d2ee843ae03aadc6a980fc06a1cb2d?d=identicon&s=25 Jean (Guest)
on 2013-01-08 23:59
(Received via mailing list)
Hello I trying this search

pg_search_scope :advance_search, against: [:title, :place, :category],
using: { tsearch: { dictionary: "spanish"} }

def self.searchadv(title, place, category)
     advance_search(:title => title, :place => place, :category =>

I could not make this work, I always get cero records, but I have
with the parameters I'm passing. By the way no all the parameter need to
present in the passing, for example I can search just using the title, o
title and place or place or category or all together.

Thanks for your help, I really need it.
164e9b4f963e5bc53883bb86beb8cd4a?d=identicon&s=25 Grant Hutchins (Guest)
on 2013-03-03 21:23
(Received via mailing list)
Hi Jean, sorry for the late reply.

When you create a search method using pg_search_scope, it takes only one
parameter, a string query.

So for your example, you should not pass a Hash into your advance_search

Instead, imagine a user wants to find things with the title "Moby Dick"
the place "Paris" with the category "Novel". They could type into a
box the single string "moby dick paris novel" and you could call
advance_search this way:

  advance_search("moby dick paris novel")


  advance_search(params[:query]) # this assumes you are in a Rails
controller and you have a form that submits a param named "query"

If you are trying to search separately by different fields, then
is not the correct solution. You could try something like this:

  def self.searchadv(title, place, category)
    where(:title => title, :place => place, :category => category)

But that will only find exact matches. Doing something more advanced
this is an exercise for the reader.

Please log in before posting. Registration is free and takes only a minute.
Existing account

NEW: Do you have a Google/GoogleMail, Yahoo or Facebook account? No registration required!
Log in with Google account | Log in with Yahoo account | Log in with Facebook account
No account? Register here.