How can I set a default value using select_tag
, and how can I keep the options open on page load?
For options_for_select
<%= select_tag("products_per_page", options_for_select([["20",20],["50",50],["100",100]],params[:per_page].to_i),{:name => "products_per_page"} ) %>
For options from collection for select
<%= select_tag "category","<option value=''>Category</option>" + options_from_collection_for_select(@store_categories, "id", "name",params[:category].to_i)%>
Note that the selected value which you are specifying must be of type value. i.e. if value is in integer format then selected value parameter should also be integer.
Its already explained, Will try to give an example for achieving the same without options_for_select
let the select list be
select_list = { eligible: 1, ineligible: 0 }
So the following code results in
<%= f.select :to_vote, select_list %>
<select name="to_vote" id="to_vote">
<option value="1">eligible</option>
<option value="0">ineligible</option>
</select>
So to make a option selected by default we have to use selected: value.
<%= f.select :to_vote, select_list, selected: select_list.can_vote? ? 1 : 0 %>
if can_vote? returns true it sets selected: 1 then the first value will be selected else second.
select name="driver[bca_aw_eligible]" id="driver_bca_aw_eligible">
<option value="1">eligible</option>
<option selected="selected" value="0">ineligible</option>
</select>
if the select options are just a array list instead of hast then the selected will be just the value to be selected for example if
select_list = [ 'eligible', 'ineligible' ]
now the selected will just take
<%= f.select :to_vote, select_list, selected: 'ineligible' %>
Try this:
<%= select_tag(:option, options_for_select([["Option 1",1],["Option 2",2],["Option 3",3]], params[:option] ), class:"select") %>
works great in rails 5.
another option (in case you need to add data attributes or other)
= content_tag(:select) do
- for a in array
option data-url=a.url selected=(a.value == true) a.name
If you are using select_tag
without any other helper, then you can do it in html:
select_tag "whatever", "<option>VISA</option><option selected=\"selected\">MasterCard</option>"
Or with options_for_select
:
select_tag "whatever", options_for_select([ "VISA", "MasterCard" ], "MasterCard")
Or with options_from_collection_for_select
:
select_tag [SELECT_FIELD_NAME], options_from_collection_for_select([YOUR_COLLECTION], [NAME_OF_ATTRIBUTE_TO_SEND], [NAME_OF_ATTRIBUTE_SEEN_BY_USER], [DEFAULT_VALUE])
Example:
select_tag "people", options_from_collection_for_select(@people, 'id', 'name', '1')
Examples are from select_tag doc, options_for_select doc and from options_from_collection_for_select doc.