# Problems using 'select'

**URL:** <https://www.ruby-forum.com/t/problems-using-select/60906>\
**Category:** Rails\
**Created:** [May 18, 2006, 1:35pm UTC](https://www.ruby-forum.com/t/problems-using-select/60906 "2006-05-18T13:35:25Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Domas\_S](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/9fc348/32.png) [@Domas\_S](https://www.ruby-forum.com/u/Domas_S)\
**Post date:** [May 18, 2006, 1:35pm UTC](https://www.ruby-forum.com/t/problems-using-select/60906/1 "2006-05-18T13:35:25Z")

</div>

I use :filter action to display form and allow record filtering. It  
contains form with  
combo box, submit button and list of record matching value in combo.

filter.rb:  
class Filter  
attr\_accessor :owner  
def initialize(params)  
@owner = ‘’;  
if !params[:filter].nil? and params[:filter].has\_key?(:owner)  
@owner = params[:filter][:owner]  
end  
end  
end

Controler:  
@users = User.find\_all  
@filter = Filter.new(params)

View:  
select ‘filter’, ‘owner’, @users.collect {|u| [u.name, u.id]},  
{:include\_blank =\> true}

My problem is that when I select some “owner” and submit the form  
it does not make current owner selected in combo box.

> From Rails documentation I understood that you had to have  
> @filter.owner = some\_value  
> to make it selected, but it doesn’t seem to work. Maybe this is only  
> for ActiveRecord descendants?

TIA,  
Domas S.

---

<div class="post-metadata">

**Author:** ![Domas\_S](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/9fc348/32.png) [@Domas\_S](https://www.ruby-forum.com/u/Domas_S)\
**Post date:** [May 18, 2006, 5:53pm UTC](https://www.ruby-forum.com/t/problems-using-select/60906/2 "2006-05-18T17:53:45Z")

</div>

This has always worked for me. Maybe cause of the find method thrown in  
there. i really don’t know…

\<%= select(‘filter’, ‘owner’, Users.find(:all, :order =\> “id  
DESC”).collect {|p| [p.name, p.id] }, {:include\_blank =\> true}) %\>

jon

---

<div class="post-metadata">

**Author:** ![Domas\_S](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/9fc348/32.png) [@Domas\_S](https://www.ruby-forum.com/u/Domas_S)\
**Post date:** [May 18, 2006, 8:13pm UTC](https://www.ruby-forum.com/t/problems-using-select/60906/3 "2006-05-18T20:13:10Z")

</div>

As I don’t have access to my app from home I’ll try to test your  
suggestions tomorrow.  
Anyway, thanks for help!

Domas S.

---

<div class="post-metadata">

**Author:** ![Domas\_S](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/9fc348/32.png) [@Domas\_S](https://www.ruby-forum.com/u/Domas_S)\
**Post date:** [May 18, 2006, 6:34pm UTC](https://www.ruby-forum.com/t/problems-using-select/60906/4 "2006-05-18T18:34:43Z")

</div>

On May 18, 2006, at 8:53 AM, Jon Mr wrote:

> This has always worked for me. Maybe cause of the find method  
> thrown in  
> there. i really don’t know…
> 
> \<%= select(‘filter’, ‘owner’, Users.find(:all, :order =\> “id  
> DESC”).collect {|p| [p.name, p.id] }, {:include\_blank =\> true}) %\>

I think these snippets of code for select tags make excellent candidates  
for helper methods:

{controller|application}\_helper.rb

def users\_for\_select  
Users.find(:all, :order =\> “id DESC”).collect { |p| [ p.name,  
p.id ] }  
end

View:

\<%= select(‘filter’, ‘owner’, users\_for\_select, { :include\_blank  
=\> true } %\>

Additionally, why sort by id? From a user’s perspective, wouldn’t  
some user  
entered value make more sense? Name or email address for instance.

–  
– Tom M.

---

<div class="post-metadata">

**Author:** ![Domas\_S](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/9fc348/32.png) [@Domas\_S](https://www.ruby-forum.com/u/Domas_S)\
**Post date:** [May 19, 2006, 10:57am UTC](https://www.ruby-forum.com/t/problems-using-select/60906/5 "2006-05-19T10:57:23Z")

</div>

The problem was that @filter.owner was a number, not a string.  
So instead:  
@owner = params[:filter][:owner]  
I wrote:  
@owner = params[:filter][:owner].to\_i

And it worked.
