diff options
Diffstat (limited to 'actionpack')
6 files changed, 26 insertions, 50 deletions
diff --git a/actionpack/lib/action_view/helpers/tags/date_field.rb b/actionpack/lib/action_view/helpers/tags/date_field.rb index 0e79609d52..64c29dea3d 100644 --- a/actionpack/lib/action_view/helpers/tags/date_field.rb +++ b/actionpack/lib/action_view/helpers/tags/date_field.rb @@ -1,13 +1,12 @@ module ActionView module Helpers module Tags - class DateField < TextField #:nodoc: - def render - options = @options.stringify_keys - options["value"] = @options.fetch("value") { value(object).try(:to_date) } - @options = options - super - end + class DateField < DatetimeField #:nodoc: + private + + def format_date(value) + value.try(:strftime, "%Y-%m-%d") + end end end end diff --git a/actionpack/lib/action_view/helpers/tags/datetime_field.rb b/actionpack/lib/action_view/helpers/tags/datetime_field.rb index 11d58744fd..e407146e96 100644 --- a/actionpack/lib/action_view/helpers/tags/datetime_field.rb +++ b/actionpack/lib/action_view/helpers/tags/datetime_field.rb @@ -4,16 +4,16 @@ module ActionView class DatetimeField < TextField #:nodoc: def render options = @options.stringify_keys - options["value"] = @options.fetch("value") { format_global_date_time_string(value(object)) } - options["min"] = format_global_date_time_string(options["min"]) - options["max"] = format_global_date_time_string(options["max"]) + options["value"] = @options.fetch("value") { format_date(value(object)) } + options["min"] = format_date(options["min"]) + options["max"] = format_date(options["max"]) @options = options super end private - def format_global_date_time_string(value) + def format_date(value) value.try(:strftime, "%Y-%m-%dT%T.%L%z") end end diff --git a/actionpack/lib/action_view/helpers/tags/datetime_local_field.rb b/actionpack/lib/action_view/helpers/tags/datetime_local_field.rb index 7593a3c733..6668d6d718 100644 --- a/actionpack/lib/action_view/helpers/tags/datetime_local_field.rb +++ b/actionpack/lib/action_view/helpers/tags/datetime_local_field.rb @@ -1,20 +1,16 @@ module ActionView module Helpers module Tags - class DatetimeLocalField < TextField #:nodoc: - def render - options = @options.stringify_keys - options["type"] = "datetime-local" - options["value"] = @options.fetch("value") { format_local_date_time_string(value(object)) } - options["min"] = format_local_date_time_string(options["min"]) - options["max"] = format_local_date_time_string(options["max"]) - @options = options - super + class DatetimeLocalField < DatetimeField #:nodoc: + class << self + def field_type + @field_type ||= "datetime-local" + end end private - def format_local_date_time_string(value) + def format_date(value) value.try(:strftime, "%Y-%m-%dT%T") end end diff --git a/actionpack/lib/action_view/helpers/tags/month_field.rb b/actionpack/lib/action_view/helpers/tags/month_field.rb index 56bd85a90b..3d3c32d847 100644 --- a/actionpack/lib/action_view/helpers/tags/month_field.rb +++ b/actionpack/lib/action_view/helpers/tags/month_field.rb @@ -1,19 +1,10 @@ module ActionView module Helpers module Tags - class MonthField < TextField #:nodoc: - def render - options = @options.stringify_keys - options["value"] = @options.fetch("value") { format_month_string(value(object)) } - options["min"] = format_month_string(options["min"]) - options["max"] = format_month_string(options["max"]) - @options = options - super - end - + class MonthField < DatetimeField #:nodoc: private - def format_month_string(value) + def format_date(value) value.try(:strftime, "%Y-%m") end end diff --git a/actionpack/lib/action_view/helpers/tags/time_field.rb b/actionpack/lib/action_view/helpers/tags/time_field.rb index 271dc00c54..a3941860c9 100644 --- a/actionpack/lib/action_view/helpers/tags/time_field.rb +++ b/actionpack/lib/action_view/helpers/tags/time_field.rb @@ -1,13 +1,12 @@ module ActionView module Helpers module Tags - class TimeField < TextField #:nodoc: - def render - options = @options.stringify_keys - options["value"] = @options.fetch("value") { value(object).try(:strftime, "%T.%L") } - @options = options - super - end + class TimeField < DatetimeField #:nodoc: + private + + def format_date(value) + value.try(:strftime, "%T.%L") + end end end end diff --git a/actionpack/lib/action_view/helpers/tags/week_field.rb b/actionpack/lib/action_view/helpers/tags/week_field.rb index a1265d9928..1e13939a0a 100644 --- a/actionpack/lib/action_view/helpers/tags/week_field.rb +++ b/actionpack/lib/action_view/helpers/tags/week_field.rb @@ -1,19 +1,10 @@ module ActionView module Helpers module Tags - class WeekField < TextField #:nodoc: - def render - options = @options.stringify_keys - options["value"] = @options.fetch("value") { format_week_string(value(object)) } - options["min"] = format_week_string(options["min"]) - options["max"] = format_week_string(options["max"]) - @options = options - super - end - + class WeekField < DatetimeField #:nodoc: private - def format_week_string(value) + def format_date(value) value.try(:strftime, "%Y-W%W") end end |