views:

635

answers:

2

When using <%= f.datetime_select :start %> for a "new" object form, how can you set the options to not select a date by default but rather a nil/null value? The field in the related model can optionally be null but by default the datetime_select control doesn't have a null option.

A: 

You'll want to use the :prompt option.

from the Rails docs:

  # Generates a datetime select with a custom prompt. Use :prompt=>true for generic prompts.
  datetime_select("post", "written_on", :prompt => {:day => 'Choose day', :month => 'Choose month', :year => 'Choose year'})
  datetime_select("post", "written_on", :prompt => {:hour => true}) # generic prompt for hours
  datetime_select("post", "written_on", :prompt => true) # generic prompts for all
Mike Breen
Extending the sample didn't seem to work. <%= f.datetime_select :start, :prompt => {:day => 'Choose day', :month => 'Choose month', :year => 'Choose year'} %>Is there a syntax error here?
Michael Glenn
You could use the vanilla helper: <%= datetime_select :my_object, :start, :prompt => {:day => 'Choose day', :month => 'Choose month', :year => 'Choose year'} %>
Mike Breen
+4  A: 

I think you want:

f.datetime_select :start, :include_blank => true

When start is nil, the fields will select the blank option. This also allows users to not enter a date.

See the documentation for date_select for details.

Luke Francl
ah, yes this is much better. thanks Luke.
Mike Breen