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 =>
category)
end

I could not make this work, I always get cero records, but I have
records
with the parameters I'm passing. By the way no all the parameter need to
be
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
method.

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

  advance_search("moby dick paris novel")

or

  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
pg_search
is not the correct solution. You could try something like this:

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

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

Grant
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.