# Filter list results

**URL:** <https://www.ruby-forum.com/t/filter-list-results/142596>\
**Category:** Rails\
**Created:** [July 9, 2008, 4:06pm UTC](https://www.ruby-forum.com/t/filter-list-results/142596 "2008-07-09T16:06:15Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Sean\_CSHess](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/94ad74/32.png) [@Sean\_CSHess](https://www.ruby-forum.com/u/Sean_CSHess)\
**Post date:** [July 9, 2008, 4:06pm UTC](https://www.ruby-forum.com/t/filter-list-results/142596/1 "2008-07-09T16:06:15Z")

</div>

Hey All,

What’s the right way to make a list of something (games in my case)  
but filtered by various parameters? For example, I have /game/list  
showing all games, but if they specify /game/list/?  
category=3&players=5 I want to show all games in that category that  
allow 5 players.

Right now, I can get the category’s games by using

```
  if defined? params[:category]
    @games = Category.find(params[:category]).games;
  end

```

and I can get the players by using

```
  if params[:players].to_i > 0
    @games = Game.find(:all, :conditions => ['players = ?',

```

params[:players]]);  
end

But how can I do both?

---

<div class="post-metadata">

**Author:** ![Sean\_CSHess](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/94ad74/32.png) [@Sean\_CSHess](https://www.ruby-forum.com/u/Sean_CSHess)\
**Post date:** [July 9, 2008, 4:59pm UTC](https://www.ruby-forum.com/t/filter-list-results/142596/2 "2008-07-09T16:59:01Z")

</div>

Any Ideas? I know how to do it with a straight SQL Query, but I’m not  
sure if there is a more ruby-like way

---

<div class="post-metadata">

**Author:** ![Sean\_CSHess](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/94ad74/32.png) [@Sean\_CSHess](https://www.ruby-forum.com/u/Sean_CSHess)\
**Post date:** [July 9, 2008, 5:06pm UTC](https://www.ruby-forum.com/t/filter-list-results/142596/3 "2008-07-09T17:06:05Z")

</div>

Straight SQL isn’t bad for this kind of stuff… @games =  
Game.find\_by\_sql("select \*…)

But there are other ways too. Conditions can be built up  
programatically…

See Ben Curtis’ well-written article on this approach:

[http://www.bencurtis.com/archives/2008/06/restful-searching-in-rails/](http://www.bencurtis.com/archives/2008/06/restful-searching-in-rails/)

Or you could use something like ez\_where

[http://opensvn.csie.org/ezra/rails/plugins/dev/ez\_where/README.txt](http://opensvn.csie.org/ezra/rails/plugins/dev/ez_where/README.txt)

---

<div class="post-metadata">

**Author:** ![Sean\_CSHess](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/94ad74/32.png) [@Sean\_CSHess](https://www.ruby-forum.com/u/Sean_CSHess)\
**Post date:** [July 10, 2008, 4:52am UTC](https://www.ruby-forum.com/t/filter-list-results/142596/4 "2008-07-10T04:52:09Z")

</div>

Thanks for the help!
