date_select

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 (How do I handle date objects in ruby on rails forms? - Stack Overflow) 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?

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.

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

WJSimacek 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

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

Colin Law wrote:

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