How to name the blank value in select?

29,381

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.

Share:
29,381
Ben
Author by

Ben

http://www.linkedin.com/in/benbachhuber@benbachhuber

Updated on September 03, 2021

Comments

  • Ben
    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
    zarazan over 11 years
    Took me too long to figure out it is different for select_tag than a traditional select. Thanks.
  • John Kloian
    John Kloian over 10 years
    Although not the answer to the question - it was the answer to my question as I wanted to set the blank label - cheers.
  • Dudo
    Dudo over 9 years
    tag behaves so much differently all over the place. trips me up all the time, as well.
  • MCB
    MCB over 9 years
    This 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
    Joshua Pinter almost 9 years
    This is absolutely correct and a bit tricky to understand. select_tag will accept a include_blank option but it will NOT display the text you pass as in as the value for that option. You need to use prompt for that. Thanks @Georgi!
  • Joshua Pinter
    Joshua Pinter almost 9 years
    This will not work for select_tag methods but will work with select methods. (And, yes, they are different.) Using a string for the value in the include_blank will only provide a blank option with no string. Use prompt in that case.
  • David Hempy
    David Hempy over 6 years
    Georgi has a better answer, below. instead of include_blank, use prompt: '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
    notapatch about 3 years
    Rails 6.1 prompt is working on select and not just select_tag.