collection_select
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.
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'})
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“)}”})
:selected
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})
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.
onChange Event
Hello,
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 %> </ol> <%= will_paginate @spendings %> <% end %> </div>