collection_select(object, method, collection, value_method, text_method, options = {}, html_options = {}) public

Return select and option tags for the given object and method using options_from_collection_for_select to generate the list of option tags.

Show source
Register or log in to add new notes.
August 26, 2008
8 thanks

Customizing prompt

The :prompt option not only accepts a boolean value. It can also be given a string to define another than the standard prompt ‘Please select’. Referring to the example it could read:

collection_select(:post, :author_id, Author.find(:all),
                  :id, :name_with_initial,
                 {:prompt => 'Please select the author of this post'})
October 10, 2008
2 thanks

Make an action onchange

collection_select(nil, :provincia_id, @provincias, :id, :nombre, {:prompt => “Seleccione una provincia”}, {:onchange => “#{remote_function(:url => {:controller => ‘direccions’, :action => ”update_pueblos“}, :with => ”‘provincia_id=’+value“)}”})

March 17, 2009
0 thanks

Post =form post, NOT the http POST method

Post =forum post, NOT the http POST method

Note: any “Post” on this page has nothing to do with http methods. When I just looked at the collection_select code I was thrown off.

June 29, 2009
0 thanks


If you want some object to be selected by default, be sure to use its id, not the whole object.

 collection_select(:post, :author_id, Author.all, :id, :name_with_initial, {:selected => current_book.authors.map(&:id)})
#=> :selected => [1,2,3,4]

and not

collection_select(:post, :author_id, Author.all, :id, :name_with_initial, {:selected => current_book.authors})
January 9, 2014 - (v3.2.13)
0 thanks

onChange Event


I’m brand new to ROR and in general server side programing. I’m a iOS developer who is trying to learn ROR.

I’m trying to use collection select to implement filtering for my page. The idea is there are a bunch of posts and I want to implement record filtering for those.

The first collection box would have parameters like “Date”, “Amount”, “Category” and based on the selection of this a secondary drop down would appear and allow the user to make a selection. The records on this page would be then filtered based on both the selection.

I have been trying out many things and have googled a lot on collection but I have reached a dead end now. I’m pretty new and just started learning ROR.

You help is much appreciated here.

Thanks in advance.

Note: the code below might be wrong and as of now its not even compiling.. currently it complaints of “remote_function” not defined…

I have a page that looks like this,

<div class=“span8”>

<% if @user.spendings.any? %>

    <h3> Spendings (<%= @user.spendings.count  %>)</h3>

    <%= collection_select(:category, :category, Category.all, :id, :name, 

{:prompt => 'Select'})%>

<%= collection_select :event, :filterType, Filters.all, :id, :filterType, {},


  :onchange => remote_function(

    :url => {:action => "updatelevel", :controller => "Spendings", :id => 1},

    :with => "'level_id='+this.value"



      <ol class="spendings">

        <%= render @spendings %>


      <%= will_paginate @spendings %>

  <% end %>