# Conditions parameter for find

**URL:** <https://www.ruby-forum.com/t/conditions-parameter-for-find/182727>\
**Category:** Rails\
**Created:** [February 2, 2010, 1:08am UTC](https://www.ruby-forum.com/t/conditions-parameter-for-find/182727 "2010-02-02T01:08:49Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![df-sean](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/f07891/32.png) [@df-sean](https://www.ruby-forum.com/u/df-sean)\
**Post date:** [February 2, 2010, 1:08am UTC](https://www.ruby-forum.com/t/conditions-parameter-for-find/182727/1 "2010-02-02T01:08:49Z")

</div>

I would like to limit the results returned by the category\_id. I can  
manually insert the category\_id :conditions =\> [‘category\_id = 1’] but I  
would like it to respond to the input from the search form instead.

:conditions =\> [“category\_id like ?”, params[:category\_id]+"%"]  
:conditions =\> [“category\_id ?”]

I can’t figure this one out.  
The view is:

\<% form\_tag search\_dudes\_path do -%\>

\<%= collection\_select(:dude, :category\_id, Category.all, :id, :name) %\>

. . .

---

<div class="post-metadata">

**Author:** ![df-sean](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/f07891/32.png) [@df-sean](https://www.ruby-forum.com/u/df-sean)\
**Post date:** [February 2, 2010, 1:59am UTC](https://www.ruby-forum.com/t/conditions-parameter-for-find/182727/2 "2010-02-02T01:59:52Z")

</div>

Sean S. wrote:

> I would like to limit the results returned by the category\_id. I can  
> manually insert the category\_id :conditions =\> [‘category\_id = 1’] but I  
> would like it to respond to the input from the search form instead.
> 
> :conditions =\> [“category\_id like ?”, params[:category\_id]+“%”]  
> :conditions =\> [“category\_id ?”]
> 
> I can’t figure this one out.  
> The view is:
> 
> \<% form\_tag search\_dudes\_path do -%\>
> 
> \<%= collection\_select(:dude, :category\_id, Category.all, :id, :name) %\>
> 
> . . .

Why are you using LIKE with a (presumably numeric) ID?

Best,  
–Â  
Marnen Laibow-Koser  
[http://www.marnen.org](http://www.marnen.org)  
removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![df-sean](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/f07891/32.png) [@df-sean](https://www.ruby-forum.com/u/df-sean)\
**Post date:** [February 2, 2010, 2:40am UTC](https://www.ruby-forum.com/t/conditions-parameter-for-find/182727/3 "2010-02-02T02:40:25Z")

</div>

It seems most reasonable to me that it would be  
:conditions =\> [“category\_id = ?”, category\_id]

But that gives me an error.

undefined local variable or method `category\_id’ for  
#DudesController:0xb6eb3960

---

<div class="post-metadata">

**Author:** ![df-sean](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/f07891/32.png) [@df-sean](https://www.ruby-forum.com/u/df-sean)\
**Post date:** [February 2, 2010, 3:44am UTC](https://www.ruby-forum.com/t/conditions-parameter-for-find/182727/4 "2010-02-02T03:44:58Z")

</div>

[Please quote properly in your replies.]

Sean S. wrote:

> It seems most reasonable to me that it would be  
> :conditions =\> [“category\_id = ?”, category\_id]
> 
> But that gives me an error.
> 
> undefined local variable or method `category\_id’ for  
> #DudesController:0xb6eb3960

So don’t use an undefined variable. This is a Ruby error. It has  
nothing to do with your SQL query string.

Best,  
–Â  
Marnen Laibow-Koser  
[http://www.marnen.org](http://www.marnen.org)  
removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![df-sean](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/f07891/32.png) [@df-sean](https://www.ruby-forum.com/u/df-sean)\
**Post date:** [February 2, 2010, 5:49am UTC](https://www.ruby-forum.com/t/conditions-parameter-for-find/182727/5 "2010-02-02T05:49:24Z")

</div>

category\_id = params[:category\_id]

@dudes = Dude.find(:all,  
:conditions =\> [“category\_id = ?”, category\_id])

This is returning no results.

---

<div class="post-metadata">

**Author:** ![df-sean](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/f07891/32.png) [@df-sean](https://www.ruby-forum.com/u/df-sean)\
**Post date:** [February 2, 2010, 7:28am UTC](https://www.ruby-forum.com/t/conditions-parameter-for-find/182727/6 "2010-02-02T07:28:42Z")

</div>

Sean S. wrote:

> category\_id = params[:category\_id]
> 
> @dudes = Dude.find(:all,  
> :conditions =\> [“category\_id = ?”, category\_id])
> 
> This is returning no results.

Then there are no results to return. This is the correct syntax.

Best,  
–Â  
Marnen Laibow-Koser  
[http://www.marnen.org](http://www.marnen.org)  
removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![df-sean](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/f07891/32.png) [@df-sean](https://www.ruby-forum.com/u/df-sean)\
**Post date:** [February 2, 2010, 7:57pm UTC](https://www.ruby-forum.com/t/conditions-parameter-for-find/182727/7 "2010-02-02T19:57:25Z")

</div>

You can also use:  
@dudes = Dude.find(:all, :conditions =\> {:category\_id =\> category\_id})

---

<div class="post-metadata">

**Author:** ![df-sean](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/f07891/32.png) [@df-sean](https://www.ruby-forum.com/u/df-sean)\
**Post date:** [February 2, 2010, 6:16am UTC](https://www.ruby-forum.com/t/conditions-parameter-for-find/182727/8 "2010-02-02T06:16:59Z")

</div>

Alight.  
:conditions =\> [“category\_id = :category\_id”, params[:dude]]
