Set date with date_select


#1

when retreiving a date from a DATETIME field in a database, is there a
way to set the date to the value of the DB in the view? It seems to
always default to the current date…

if I have a field called birthdate in the users table and i do

@user = User.find(@params[:id])

in my view i have a <%= date_select ‘birthdate’,‘user’ %>

but dont know how to set a value for date_select that isnt the current
date.

Any ideas ?

thanks
adam


#2

sorry your right,i typed it wrong in the email, its correct in my
view. However i still dont know how to populate the ‘default’ values
of the month/day/year. it always defaults to the current date. How
do i set the birthdate(1i) pieces of the object so that the form has
the values from the DB and not the current date?

thanks
adam


#3

On 1/6/06, Adam D. removed_email_address@domain.invalid wrote:

but dont know how to set a value for date_select that isnt the current date.

You’ve got the parameters reversed; the ActiveRecord instance comes
first:
http://api.rubyonrails.com/classes/ActionView/Helpers/DateHelper.html#M000381

Also, if you need the TIME part of the DATETIME column, you may want
datetime_select instead.


#4

Adam:
On Jan 6, 2006, at 8:36 PM, Adam D. wrote:

but dont know how to set a value for date_select that isnt the
current date.

[untested]
date_select “birthday”, “user”, :start_year =>
user.birthday.year, :start_month => user.birthday.mon, :start_day =>
user.birthday.day

Cheers,
Hasan D. removed_email_address@domain.invalid


#5

date_select should be handling that for you, assuming:

  1. You call it <%= date_select ‘user’, ‘birthdate’ %>
  2. @user is an instance variable that has been set.
  3. @user.respond_to?(:birthdate)
  4. @user.birthdate returns a Date.

Make sure all four of those things are true, and you should be OK.