How to name the blank value in select?
Solution 1
It depends on how you are constructing your options for select. If you're doing it like the code below, just pass a string into the :include blank.
select("post", "person_id", Person.all.collect {|p| [ p.name, p.id ] }, {:include_blank => 'Some text here'})
If you're setting the options with a options_for_select(), then you can do something like the following:
options_for_select([["Dollar", "$"], ["Kroner", "DKK"]])
With the value="" being the second value in the array and the name that shows up in the dropdown being first. So in your case, you could change the second answer to look like this:
options_for_select([["Some text here", ""], ["Dollar", "$"], ["Kroner", "DKK"]])
Solution 2
Instead of
:include_blank => true
Try
:include_blank => "your text here"
if this is what you are looking.
Solution 3
If you are using the select_tag(name, option_tags = nil, options = {})
function, the correct option is :prompt => "Some text"
rather than setting a string value for select
Solution 4
You can do this manually by adding ["Your Text", ""]
to the beginning of the array passed to options_for_select
, or add "<option value=\"\">#{h("Your Text"}</option>"
to beginning of the string passed to select_tag
.
Comments
-
Ben over 2 years
I use simple_form in my app.
How do i give the blank value in my selects a different text than "" ?
I just find an option to include blank or not.
-
zarazan over 11 yearsTook me too long to figure out it is different for select_tag than a traditional select. Thanks.
-
John Kloian over 10 yearsAlthough not the answer to the question - it was the answer to my question as I wanted to set the blank label - cheers.
-
Dudo over 9 yearstag behaves so much differently all over the place. trips me up all the time, as well.
-
MCB over 9 yearsThis wasn't asked, but if you want the blank option not to be selectable you can add
:include_blank => true, disabled: "", selected: "", placeholder: "Foo Bar"
-
Joshua Pinter almost 9 yearsThis is absolutely correct and a bit tricky to understand.
select_tag
will accept ainclude_blank
option but it will NOT display the text you pass as in as the value for that option. You need to useprompt
for that. Thanks @Georgi! -
Joshua Pinter almost 9 yearsThis will not work for
select_tag
methods but will work withselect
methods. (And, yes, they are different.) Using a string for the value in theinclude_blank
will only provide a blank option with no string. Useprompt
in that case. -
David Hempy over 6 yearsGeorgi has a better answer, below. instead of
include_blank
, useprompt: 'Which person?'
It will have a blank value, but the display text you provide.include_blank
only accepts a boolean -- it does not accept a string to display. -
notapatch about 3 yearsRails 6.1 prompt is working on select and not just select_tag.