Have a datetime attribute? Want to have a datepicker for the date and dropdown menus for the time? This gem adds the necessary accessors to your model.
In your Gemfile
:
gem "split_datetime"
After bundling, assuming you have an Event model with a starts_at attribute, add this to your model:
class Event < ActiveRecord::Base
extend SplitDatetime::Accessors
accepts_split_datetime_for :starts_at
end
In your view:
<%= simple_form_for @event do |f| %>
<%= f.input :starts_at_date, as: :string, input_html: { class: 'datepicker' } %>
<%= f.input :starts_at_hour, collection: 0..24 %>
<%= f.input :starts_at_min, collection: [0, 15, 30, 45] %>
<%= ... %>
<% end %>
Add your js datepicker and you're good to go. (Of course, this also works with standard rails form helpers).
starts_at
will be Time.now with the minute set to 0 by default. If you want to change this, pass in a lambda wrapping the default. E.g.:
accepts_split_datetime_for :starts_at, default: lambda { Time.now.change(min: 0) + 2.weeks }
accepts_split_datetime_for :starts_at, default: lambda { Time.now }
You can also specify the date format for the view:
accepts_split_datetime_for :starts_at, format: "%D"
See Time#strftime
for formats. Default is "%F"
.