if ActionView::Helpers::AssetTagHelper.respond_to?('register_javascript_expansion') ActionView::Helpers::AssetTagHelper.register_javascript_expansion :date_splicer => ["calendar/calendar.js", "calendar/lang/calendar-parser-#{I18n.locale}.js", "calendar/lang/calendar-#{I18n.locale}.js", "calendar/calendar-parser.js", "calendar/calendar-setup.js"] end ## Wrap date_splicer helper in FormBuilder method. ## This allows use in form_for context: <% form_for(@account) do |f| %><%= f.date_splicer :start_date %> class ActionView::Helpers::FormBuilder def date_splicer(method_name, options = {}, format = :long, default_to_now = false) @template.date_splicer(@object_name, method_name, objectify_options(options), format, default_to_now) end end ## Add date_splicer as a specific kind of helper: FormHelper module ActionView::Helpers::FormHelper def date_splicer(object_name, method_name, options = {}, format = :long, default_to_now = false) ActionView::Helpers::InstanceTag.new(object_name, method_name, self, options.delete(:object)).to_date_splicer(options, format, default_to_now) end end class ActionView::Helpers::InstanceTag def to_date_splicer(options, format, default_to_now) options = options.stringify_keys add_default_name_and_id(options) object = @object init_date = object.send(method_name) || (Time.now if default_to_now) js_date = (init_date) ? "date : new Date(#{init_date.year},(#{init_date.month}-1),#{init_date.day}),\n" : "" content = "
#{to_input_field_tag("text", options)}
" end end