Dates and Times

Rails also provides support for basic date and time entry, as was shown in the form generated by the scaffolding. The scaffolding started out with:

<p>
    <b>Birthday</b><br />
    <%= f.date_select :birthday %>
  </p>

  <p>
    <b>Favorite time</b><br />
    <%= f.datetime_select :favorite_time %>
  </p>

And these generated the neat-looking but very inconvenient selection lists shown in Figure 6-5.

Rails default approach of using selection lists for dates and times

Figure 6-5. Rails default approach of using selection lists for dates and times

Besides the date_select and datetime_select methods, Rails also offers time_select and has a variety of helper methods for individual pieces of dates and times. Rails offers some options that can make these interfaces more customizable, but picking days off a 31-item selection list or minutes off a 60-item list is pretty much always going to be a less-than-fun user experience. You’ll probably want to turn to more attractive date and time interfaces from Ajax libraries or revert to simple text boxes, but in case you have an application where you want to use these methods, the options for them include:

:start_year

By default, Rails sets the start year to five years before the current date. You can specify an earlier (or later) date if you need to, by specifying :start_year => value.

:end_year

Rails also sets the end year to five years after the current date. Again, you can specify a later (or earlier) date by specifying :end_year => value.

:use_month_numbers

If you’d prefer to have the months listed by number rather than by name, set :use_month_numbers => true.

:discard_day

Some date applications don’t need days. You can set :discard_day => true to simply not include the day field. You can also do the same with :discard_month or :discard_year, and for times and datetimes, you can do the same with :discard_hour, :discard_minute, and :discard_seconds.

:disabled

Setting :disabled => true tells Rails to show the date, but doesn’t allow change. The values will appear in gray.

:include_blank

Setting :include_blank => true tells Rails to include a blank choice at the top of each selection list, so users don’t have to specify every single component of a date.

:include_seconds

Specifying :include_seconds => true adds a field for seconds to times and datetimes.

:order

Using the order option lets you specify the sequence for the different components of the date or time. You list the components as an array, such as :order => [:month, :day, :year].

:include_seconds

Specifying :include_seconds => true adds a field for seconds to times and datetimes.

Note

You’ll find some more exciting options for handling dates and times in Chapter 17.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset