Date_select


#1

I don’t really understand how forms are generated so this may be a very
easy question.

I have some code that does a date select:

    <p>
            <%= f.label :StartDate%> <br />
            <%= f.date_select :start_date %>
    </p>

    <p>
            <%= f.label :EndDate %> <br />
            <%= f.date_select :end_date %>
    </p>

Which results in the following when posted:

Checked Out Times:
Start: 05-20-2009 18:30:20
End: 05-21-2009 19:30:20

However, when I go to edit the time I see the following in the date
select:

Start Time: 20:18
End Time : 20:19

This occurs because my times are stored in the database as:

| 20:19:17 | 20:20:17 or as mm:hh:ss

Thus when the edit occurs it grabs the seconds and the minutes. Is
there a way to change the form to properly select the correct time?
I’ve tried :order => [:hour, :minute, :second] like here
(http://stackoverflow.com/questions/732806/how-do-i-handle-date-objects-in-ruby-on-rails-forms)
but haven’t found a way to do it. Am I using the wrong type of form?
Should I be querying the database in a different way?


#2

If you save it in the database as a datetime then all should be well.
If
that is not possible then you could have a virtual datetime member that
you
setup in a filter after reading it from the db and this is what goes to
the
form. You can then put the code converting it back to your homespun
format
in another filter before writing to the db.

2009/5/21 Tyler K. removed_email_address@domain.invalid


#3

WJSimacek wrote:

On May 21, 2:28�am, Colin L. removed_email_address@domain.invalid wrote:

If you save it in the database as a datetime then all should be well. �If

Have you tried using the :db format?:

    Time.now.to_s(:db)     #  this forces the save to the db in

compatable formats

– Wayne

I’m not sure how to add this to the code. I’ve found form helpers very
unintuitive. Can anyone point me towards a good guide or documentation?

Thanks,
-Tyler


#4

On May 21, 2:28 am, Colin L. removed_email_address@domain.invalid wrote:

If you save it in the database as a datetime then all should be well. If

Have you tried using the :db format?:

    Time.now.to_s(:db)     #  this forces the save to the db in

compatable formats

– Wayne


#5

2009/5/21 Tyler K. removed_email_address@domain.invalid

I may have to be corrected, but I don’t think this is necessary. If the
db
column is datetime (as defined in the migration and schema.rb) then the
value in a DateTime object should be written (and read) automatically in
the
appropriate format.

Colin


#6

Colin L. wrote:

2009/5/21 Tyler K. removed_email_address@domain.invalid

I may have to be corrected, but I don’t think this is necessary. If the
db
column is datetime (as defined in the migration and schema.rb) then the
value in a DateTime object should be written (and read) automatically in
the
appropriate format.

Colin

Would this be true of date and time fields? That is how I am storing
them right now… I’m tempted to make the switch to datetime; it just
seems to be easier in the long run and I now know how to filter the date
and times from the single field.


#7

I don’t know about date and time types.
Colin

2009/5/21 Tyler K. removed_email_address@domain.invalid