Method: ActionView::Helpers::FormHelper#datetime_field

Defined in:
actionview/lib/action_view/helpers/form_helper.rb

#datetime_field(object_name, method, options = {}) ⇒ Object Also known as: datetime_local_field

Returns a text_field of type “datetime-local”.

datetime_field("user", "born_on")
# => <input id="user_born_on" name="user[born_on]" type="datetime-local" />

The default value is generated by trying to call strftime with “%Y-%m-%dT%T” on the object’s value, which makes it behave as expected for instances of DateTime and ActiveSupport::TimeWithZone.

@user.born_on = Date.new(1984, 1, 12)
datetime_field("user", "born_on")
# => <input id="user_born_on" name="user[born_on]" type="datetime-local" value="1984-01-12T00:00:00" />

You can create values for the “min” and “max” attributes by passing instances of Date or Time to the options hash.

datetime_field("user", "born_on", min: Date.today)
# => <input id="user_born_on" name="user[born_on]" type="datetime-local" min="2014-05-20T00:00:00.000" />

Alternatively, you can pass a String formatted as an ISO8601 datetime as the values for “min” and “max.”

datetime_field("user", "born_on", min: "2014-05-20T00:00:00")
# => <input id="user_born_on" name="user[born_on]" type="datetime-local" min="2014-05-20T00:00:00.000" />

By default, provided datetimes will be formatted including seconds. You can render just the date, hour, and minute by passing include_seconds: false.

@user.born_on = Time.current
datetime_field("user", "born_on", include_seconds: false)
# => <input id="user_born_on" name="user[born_on]" type="datetime-local" value="2014-05-20T14:35" />


1512
1513
1514
# File 'actionview/lib/action_view/helpers/form_helper.rb', line 1512

def datetime_field(object_name, method, options = {})
  Tags::DatetimeLocalField.new(object_name, method, self, options).render
end