How do I set the HTML options for collection_select in Rails?

HtmlRuby on-RailsDrop Down-Menu

Html Problem Overview


I can't seem to find the syntax to add a class to a select tag generated by Rails collection_select. Some help?

Html Solutions


Solution 1 - Html

Many Rails helpers take multiple hash arguments. The first is usually the options to control the helper itself, and the second is the html_options where you specifiy custom ids, classes etc.

The method definition looks like this:

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

You'll notice the multiple '= {}' in the params list. To use this, the first set of options that you would specify must actually be enclosed in braces:

collection_select(:user, :title, UserTitle.all, :id, :name, {:prompt=>true}, {:class=>'my-custom-class'})

If you don't have any options to specify besides the html class, then just put an empty hash placeholder:

collection_select(:user, :title, UserTitle.all, :id, :name, {}, {:class=>'my-custom-class'})

Additional API documentation is available at: http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/collection_select

Solution 2 - Html

= f.collection_select :category_id, Category.order(:name), :id, :name, {}, {class: "store-select"}

Solution 3 - Html

Just in case, I was struggling with the same problem, I share my result, I was trying just putting {},{}, so I had to be more explicit putting like this: options = {}, html_options = {}, because it did not work for me.

<div class="field">
   <%= form.label :country_id %>
   <%= form.collection_select :country_id, @countries,:id, :name, options = {:prompt => 'Select a Country...'},
        html_options = {class: "dropdown"}%>
 </div>

Regards!

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questiontybro0103View Question on Stackoverflow
Solution 1 - HtmlDrew BlasView Answer on Stackoverflow
Solution 2 - HtmldrjorgepolancoView Answer on Stackoverflow
Solution 3 - HtmlGamalielView Answer on Stackoverflow