# Collection\_select

**URL:** <https://www.ruby-forum.com/t/collection-select/84144>\
**Category:** Rails\
**Created:** [February 1, 2007, 9:33pm UTC](https://www.ruby-forum.com/t/collection-select/84144 "2007-02-01T21:33:06Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![jason](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/dc4da7/32.png) [@jason](https://www.ruby-forum.com/u/jason)\
**Post date:** [February 1, 2007, 9:33pm UTC](https://www.ruby-forum.com/t/collection-select/84144/1 "2007-02-01T21:33:06Z")

</div>

What am I doing wrong here? I’m trying to create a select box with a  
normal id/value setup.

Here’s my code:

\<% form\_tag ‘/list’ %\>

```
<%= collection_select( :route_id, @routes, :id, :name, {}, {} ) %>

```

\<%= end\_form\_tag %\>

Here’s the NoMethodError exception I’m getting:

undefined method `inject’ for 🆔Symbol

Extracted source (around line #15):

12:  
13: \<% form\_tag ‘/list’ %\>  
14:  
15: \<%= collection\_select( :route\_id, @routes, :id, :name, {}, {} )  
%\>  
16:  
17: \<%= end\_form\_tag %\>  
18:

What am I doing wrong?

Thanks!

---

<div class="post-metadata">

**Author:** ![jason](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/dc4da7/32.png) [@jason](https://www.ruby-forum.com/u/jason)\
**Post date:** [February 1, 2007, 9:42pm UTC](https://www.ruby-forum.com/t/collection-select/84144/2 "2007-02-01T21:42:05Z")

</div>

\<%= collection\_select( :route\_id, @routes, :id, :name, {}, {} ) %\>

You may be using the wrong tag here. collection\_select is for model  
fields so expects:  
collection\_select(object, attribute, collection, value\_method,  
text\_method)

You probably want something like this:  
\<%= select\_tag(‘route\_id’,  
options\_from\_collection\_for\_select(@routes, :id, :name)) %\>

Steve

---

<div class="post-metadata">

**Author:** ![jason](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/dc4da7/32.png) [@jason](https://www.ruby-forum.com/u/jason)\
**Post date:** [February 2, 2007, 1:15am UTC](https://www.ruby-forum.com/t/collection-select/84144/3 "2007-02-02T01:15:08Z")

</div>

I’ve tried that and it does work, so I appreciate your help.

How can I add an onchange event to this select box now?

Thanks,

Jason

---

<div class="post-metadata">

**Author:** ![jason](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/dc4da7/32.png) [@jason](https://www.ruby-forum.com/u/jason)\
**Post date:** [May 11, 2007, 12:36pm UTC](https://www.ruby-forum.com/t/collection-select/84144/4 "2007-05-11T12:36:32Z")

</div>

Have a look at this.  
[http://shiningthrough.co.uk/blog/show/6](http://shiningthrough.co.uk/blog/show/6)

---

<div class="post-metadata">

**Author:** ![jason](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/dc4da7/32.png) [@jason](https://www.ruby-forum.com/u/jason)\
**Post date:** [February 2, 2007, 1:27am UTC](https://www.ruby-forum.com/t/collection-select/84144/5 "2007-02-02T01:27:44Z")

</div>

Actually, I figured that out, but how can I insert a default value, like  
‘Please select an option…’ to the select box?
