Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set default date in date_select helper in Rails

I'm trying to set up a date of birth helper in my Rails app (2.3.5). At present it is like so.

<%= f.date_select :date_of_birth, :start_year => Time.now.year - 110, :end_year => Time.now.year %>

This generates a perfectly functional set of date fields that work just fine but....

They default to today's date which is not ideal for a date of birth field (I'm not sure what is but unless you're running a neonatal unit today's date seems less than ideal). I want it to read Jan 1 2010 instead (or 2011 or whatever year it happens to be). Using the :default option has proven unsuccessful. I've tried many possibilities including;

<%= f.date_select :date_of_birth, :default => {:year => Time.now.year, :month => 'Jan', :day => 1}, :start_year => Time.now.year - 110, :end_year => Time.now.year %>

and

<%= f.date_select :date_of_birth, :default => Time.local(2010,'Jan',1), :start_year => Time.now.year - 110, :end_year => Time.now.year %>

None of this changes the behaviour of the first example. Does the default option actually work as described? It seems that this should be a fairly straightforward thing to do.

Ta.

like image 550
brad Avatar asked Dec 28 '22 21:12

brad


1 Answers

I think that easiest way is to assign it in controller, for example for new action:

@person = Person.new(:date_of_birth => "2010-01-01".to_date)

Then in your view you will get correct date.

EDIT:
If you want to assign default value on model level, you can try do it with plugin. However I haven't try it.

like image 146
klew Avatar answered Dec 31 '22 11:12

klew