Forum: Ruby on Rails Database Query on the fly Using Forms

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
Arik (Guest)
on 2005-12-20 11:07
I am a freshman when it comes to RoR, and I haven't been able to figure
this out. I need to figure out how to query records in my database using
form check boxes (or radio buttons) then display them in that same
instance. What would this look?

I have been told that just putting a question mark after here,
:conditions => field = ?, but what would the argument look like?

Thanks in advance.
Wilson B. (Guest)
on 2005-12-20 18:21
(Received via mailing list)
One handy way is to use named parameters in the 'conditions' option:
Something.find(:all, ["blah = :foo or honk = :beep or other = :foo",
If you name your form fields "foo" and "beep", such that params[:foo]
and params[:beep] give you the values you're looking for, that find()
call will 'just work'.

The documentation for 'conditions' is at the top of this page:

Grant Gelinas-Brown (Guest)
on 2005-12-21 17:52
(Received via mailing list)
This worked well for me (after some trial and error).

Only slightly OT, how do you use these Named Variables and perform a
query? Using '=' works no problem, but I receive strange results when I
something like:

:conditions => ["FirstName like :firstname%", {:firstname => firstname}]

ActiveRecord seems to put the '%' symbol outside of the quoted value,
causing a SQL error.

Nic W. (Guest)
on 2005-12-21 18:29
(Received via mailing list)
I had to append the '%', something like ....{firstname => firstname}+'%'

The syntax isn't correct, but you get the idea. Anybody have any
better suggestions?

- Nic.
Grant Gelinas-Brown (Guest)
on 2005-12-21 18:35
(Received via mailing list)
Thanks for the tip there Nic. Worked for me.

Like yourself, I'm curious if this is the only way, or if there is a
way' of doing this.

Wilson B. (Guest)
on 2005-12-21 18:47
(Received via mailing list)
If you need that kind of thing, you're perhaps better off modifying
the params before passing them to the find().
params[:firstname] += '%'
..which will append a % sign to the end of the value of :firstname.
Chris H. (Guest)
on 2005-12-21 19:41
(Received via mailing list)
find :all, :conditions => ["name LIKE ?", "%#{params[:name]}%"]
This topic is locked and can not be replied to.