<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -11,6 +11,12 @@ module ActionView
     # * &lt;tt&gt;:include_blank&lt;/tt&gt; - set to true if it should be possible to set an empty date.
     # * &lt;tt&gt;:discard_type&lt;/tt&gt; - set to true if you want to discard the type part of the select name. If set to true, the select_month
     #   method would use simply &quot;date&quot; (which can be overwritten using &lt;tt&gt;:prefix&lt;/tt&gt;) instead of &quot;date[month]&quot;.
+    # * &lt;tt&gt;:prompt&lt;/tt&gt; - set to true (for a generic prompt) or a prompt string. For date helpers with mutiple fields, specify the prompt 
+    #   you wish to set in a hash. This prepends an option with a generic prompt (Day, Month, Year, Hour, Minute, Seconds) or the given prompt 
+    #   string.
+    #    
+    # Example:  
+    #   date_select(&quot;post&quot;, &quot;written_on&quot;, :prompt=&gt;{:day=&gt;'Select day', :month=&gt;'Select month', :year=&gt;'Select year'})
     module DateHelper
       include ActionView::Helpers::TagHelper
       DEFAULT_PREFIX = 'date' unless const_defined?('DEFAULT_PREFIX')
@@ -148,6 +154,11 @@ module ActionView
       #   # that will have a default day of 20.
       #   date_select(&quot;credit_card&quot;, &quot;bill_due&quot;, :default =&gt; { :day =&gt; 20 })
       #
+      #   # Generates a datetime select with a custom prompt. Use :prompt=&gt;true for generic prompts.
+      #   date_select(&quot;post&quot;, &quot;written_on&quot;, :prompt=&gt;{:day=&gt;'Choose day, :month=&gt;'Choose month', :year=&gt;'Choose year'})
+      #   date_select(&quot;post&quot;, &quot;written_on&quot;, :prompt=&gt;{:hours=&gt;true) # generic prompt for hours
+      #   date_select(&quot;post&quot;, &quot;written_on&quot;, :prompt=&gt;true) # generic prompts for all
+      #
       # The selects are prepared for multi-parameter assignment to an Active Record object.
       #
       # Note: If the day is not included as an option but the month is, the day will be set to the 1st to ensure that all month
@@ -186,6 +197,11 @@ module ActionView
       #   # You can set the :minute_step to 15 which will give you: 00, 15, 30 and 45.
       #   time_select 'game', 'game_time', {:minute_step =&gt; 15}
       #
+      #   # Generates a datetime select with a custom prompt. Use :prompt=&gt;true for generic prompts.
+      #   time_select(&quot;post&quot;, &quot;written_on&quot;, :prompt=&gt;{:hour=&gt;'Choose hour', :minute=&gt;'Choose minute', :second=&gt;'Choose seconds'})
+      #   time_select(&quot;post&quot;, &quot;written_on&quot;, :prompt=&gt;{:hour=&gt;true) # generic prompt for hours
+      #   time_select(&quot;post&quot;, &quot;written_on&quot;, :prompt=&gt;true) # generic prompts for all
+      #
       # The selects are prepared for multi-parameter assignment to an Active Record object.
       #
       # Note: If the day is not included as an option but the month is, the day will be set to the 1st to ensure that all month
@@ -215,6 +231,11 @@ module ActionView
       #   # attribute.
       #   datetime_select(&quot;post&quot;, &quot;written_on&quot;, :discard_type =&gt; true)
       #
+      #   # Generates a datetime select with a custom prompt. Use :prompt=&gt;true for generic prompts.
+      #   datetime_select(&quot;post&quot;, &quot;written_on&quot;, :prompt=&gt;{:day=&gt;'Choose day', :month=&gt;'Choose month', :year=&gt;'Choose year'})
+      #   datetime_select(&quot;post&quot;, &quot;written_on&quot;, :prompt=&gt;{:hour=&gt;true) # generic prompt for hours
+      #   datetime_select(&quot;post&quot;, &quot;written_on&quot;, :prompt=&gt;true) # generic prompts for all
+      #
       # The selects are prepared for multi-parameter assignment to an Active Record object.
       def datetime_select(object_name, method, options = {}, html_options = {})
         InstanceTag.new(object_name, method, self, options.delete(:object)).to_datetime_select_tag(options, html_options)
@@ -253,6 +274,11 @@ module ActionView
       #   # prefixed with 'payday' rather than 'date'
       #   select_datetime(my_date_time, :prefix =&gt; 'payday')
       #
+      #   # Generates a datetime select with a custom prompt. Use :prompt=&gt;true for generic prompts.
+      #   select_datetime(my_date_time, :prompt=&gt;{:day=&gt;'Choose day', :month=&gt;'Choose month', :year=&gt;'Choose year'})
+      #   select_datetime(my_date_time, :prompt=&gt;{:hour=&gt;true) # generic prompt for hours
+      #   select_datetime(my_date_time, :prompt=&gt;true) # generic prompts for all
+      #
       def select_datetime(datetime = Time.current, options = {}, html_options = {})
         separator = options[:datetime_separator] || ''
         select_date(datetime, options, html_options) + separator + select_time(datetime, options, html_options)
@@ -286,6 +312,11 @@ module ActionView
       #   # prefixed with 'payday' rather than 'date'
       #   select_datetime(my_date_time, :prefix =&gt; 'payday')
       #
+      #   # Generates a date select with a custom prompt. Use :prompt=&gt;true for generic prompts.
+      #   select_date(my_date, :prompt=&gt;{:day=&gt;'Choose day', :month=&gt;'Choose month', :year=&gt;'Choose year'})
+      #   select_date(my_date, :prompt=&gt;{:month=&gt;true) # generic prompt for month
+      #   select_date(my_date, :prompt=&gt;true) # generic prompts for all
+      #
       def select_date(date = Date.current, options = {}, html_options = {})
         options[:order] ||= []
         [:year, :month, :day].each { |o| options[:order].push(o) unless options[:order].include?(o) }
@@ -324,8 +355,14 @@ module ActionView
       #   # separated by ':' and includes an input for seconds
       #   select_time(my_time, :time_separator =&gt; ':', :include_seconds =&gt; true)
       #
+      #   # Generates a time select with a custom prompt.  Use :prompt=&gt;true for generic prompts
+      #   select_time(my_time, :prompt=&gt;{:hours=&gt;'Choose hours', :minutes=&gt;'Choose minutes'})
+      #   select_time(my_time, :prompt=&gt;{:hours=&gt;true}) # prompt for hours only
+      #   select_time(my_time, :prompt=&gt;true) # prompt for all
+      #
       def select_time(datetime = Time.current, options = {}, html_options = {})
         separator = options[:time_separator] || ''
+        select_time = ''
         select_hour(datetime, options, html_options) + separator + select_minute(datetime, options, html_options) + (options[:include_seconds] ? separator + select_second(datetime, options, html_options) : '')
       end
 
@@ -395,7 +432,7 @@ module ActionView
             minute_options &lt;&lt; &quot;\n&quot;
           end
           select_html(options[:field_name] || 'minute', minute_options.join, options, html_options)
-         end
+        end
       end
 
       # Returns a select tag with options for each of the hours 0 through 23 with the current hour selected.
@@ -414,6 +451,10 @@ module ActionView
       #   # Generates a select field for minutes that defaults to the minutes for the time in my_time
       #   # that is named 'stride' rather than 'second'
       #   select_minute(my_time, :field_name =&gt; 'stride')
+      #   
+      #   # Generates a select field for minutes with a custom prompt.  Use :prompt=&gt;true for a
+      #   # generic prompt.
+      #   select_minute(14, :prompt=&gt;'Choose minutes')
       #
       def select_hour(datetime, options = {}, html_options = {})
         val = datetime ? (datetime.kind_of?(Fixnum) ? datetime : datetime.hour) : ''
@@ -448,9 +489,14 @@ module ActionView
       #   # Generates a select field for days that defaults to the day for the date in my_date
       #   # that is named 'due' rather than 'day'
       #   select_day(my_time, :field_name =&gt; 'due')
+      #   
+      #   # Generates a select field for days with a custom prompt.  Use :prompt=&gt;true for a
+      #   # generic prompt.
+      #   select_day(5, :prompt=&gt;'Choose day')
       #
       def select_day(date, options = {}, html_options = {})
         val = date ? (date.kind_of?(Fixnum) ? date : date.day) : ''
+
         if options[:use_hidden]
           hidden_html(options[:field_name] || 'day', val, options)
         else
@@ -499,6 +545,10 @@ module ActionView
       #   # Generates a select field for months that defaults to the current month that
       #   # will use keys like &quot;Januar&quot;, &quot;Marts.&quot;
       #   select_month(Date.today, :use_month_names =&gt; %w(Januar Februar Marts ...))
+      #   
+      #   # Generates a select field for months that has a custom prompt. Use 
+      #   :prompt=&gt;true for a generic prompt
+      #   select_month(Date.today, :prompt=&gt;'Choose month')
       #
       def select_month(date, options = {}, html_options = {})
         val = date ? (date.kind_of?(Fixnum) ? date : date.month) : ''
@@ -546,10 +596,11 @@ module ActionView
       #   select_year(Date.today, :start_year =&gt; 2005, :end_year =&gt; 1900)
       #
       #   # Generates a select field for years that defaults to the year 2006 that
-      #   # has ascending year values
-      #   select_year(2006, :start_year =&gt; 2000, :end_year =&gt; 2010)
+      #   # has ascending year values, with a custom prompt
+      #   select_year(2006, :start_year =&gt; 2000, :end_year =&gt; 2010, :prompt=&gt;'Choose year')
       #
       def select_year(date, options = {}, html_options = {})
+        
         if !date || date == 0
           value = ''
           middle_year = Date.today.year
@@ -558,7 +609,7 @@ module ActionView
         else
           value = middle_year = date.year
         end
-
+        
         if options[:use_hidden]
           hidden_html(options[:field_name] || 'year', value, options)
         else
@@ -587,6 +638,7 @@ module ActionView
           select_options.merge!(:disabled =&gt; 'disabled') if options[:disabled]
           select_options.merge!(select_tag_options) unless select_tag_options.empty?
           select_html = &quot;\n&quot;
+          select_html &lt;&lt; prompt_option_tag(type, options)
           select_html &lt;&lt; content_tag(:option, '', :value =&gt; '') + &quot;\n&quot; if options[:include_blank]
           select_html &lt;&lt; html_options.to_s
           content_tag(:select, select_html, select_options) + &quot;\n&quot;
@@ -605,6 +657,24 @@ module ActionView
         def leading_zero_on_single_digits(number)
           number &gt; 9 ? number : &quot;0#{number}&quot;
         end
+        
+        def prompt_option_tag(type, options)     
+         default_options = {:year=&gt;false, :month=&gt;false, :day=&gt;false, :hour=&gt;false, :minute=&gt;false, :second=&gt;false}
+         default_prompts = {:year=&gt;'Year', :month=&gt;'Month', :day=&gt;'Day', :hour=&gt;'Hour', :minute=&gt;'Minute', :second=&gt;'Seconds'}
+         options[:prompt] ||= default_options
+
+         case options[:prompt]
+         when Hash
+           prompt = default_options.merge(options[:prompt])[type.to_sym]
+         when String
+           prompt = options[:prompt]
+         else
+           prompt = default_prompts[type.to_sym]
+         end
+         
+         prompt ? content_tag(:option, prompt, :value =&gt; '') + &quot;\n&quot; : ''
+        end
+              
     end
 
     class InstanceTag #:nodoc:
@@ -627,7 +697,7 @@ module ActionView
           defaults = { :discard_type =&gt; true }
           options  = defaults.merge(options)
           datetime = value(object)
-          datetime ||= default_time_from_options(options[:default]) unless options[:include_blank]
+          datetime ||= default_time_from_options(options[:default]) unless options[:include_blank] || options[:prompt]
 
           position = { :year =&gt; 1, :month =&gt; 2, :day =&gt; 3, :hour =&gt; 4, :minute =&gt; 5, :second =&gt; 6 }
 
@@ -659,7 +729,7 @@ module ActionView
             # Send hidden fields for discarded elements once output has started
             # This ensures AR can reconstruct valid dates using ParseDate
             next if discard[param] &amp;&amp; (date_or_time_select.empty? || options[:ignore_date])
-
+            
             date_or_time_select.insert(0, self.send(&quot;select_#{param}&quot;, datetime, options_with_prefix(position[param], options.merge(:use_hidden =&gt; discard[param])), html_options))
             date_or_time_select.insert(0,
               case param</diff>
      <filename>actionpack/lib/action_view/helpers/date_helper.rb</filename>
    </modified>
    <modified>
      <diff>@@ -152,6 +152,22 @@ class DateHelperTest &lt; ActionView::TestCase
     assert_dom_equal expected, select_day(Time.mktime(2003, 8, 16), {}, :class =&gt; 'selector')
     assert_dom_equal expected, select_day(16, {}, :class =&gt; 'selector')
   end
+  
+  def test_select_day_with_default_prompt
+    expected = %(&lt;select id=&quot;date_day&quot; name=&quot;date[day]&quot;&gt;\n)
+    expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Day&lt;/option&gt;\n&lt;option value=&quot;1&quot;&gt;1&lt;/option&gt;\n&lt;option value=&quot;2&quot;&gt;2&lt;/option&gt;\n&lt;option value=&quot;3&quot;&gt;3&lt;/option&gt;\n&lt;option value=&quot;4&quot;&gt;4&lt;/option&gt;\n&lt;option value=&quot;5&quot;&gt;5&lt;/option&gt;\n&lt;option value=&quot;6&quot;&gt;6&lt;/option&gt;\n&lt;option value=&quot;7&quot;&gt;7&lt;/option&gt;\n&lt;option value=&quot;8&quot;&gt;8&lt;/option&gt;\n&lt;option value=&quot;9&quot;&gt;9&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;10&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;11&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;12&lt;/option&gt;\n&lt;option value=&quot;13&quot;&gt;13&lt;/option&gt;\n&lt;option value=&quot;14&quot;&gt;14&lt;/option&gt;\n&lt;option value=&quot;15&quot;&gt;15&lt;/option&gt;\n&lt;option value=&quot;16&quot; selected=&quot;selected&quot;&gt;16&lt;/option&gt;\n&lt;option value=&quot;17&quot;&gt;17&lt;/option&gt;\n&lt;option value=&quot;18&quot;&gt;18&lt;/option&gt;\n&lt;option value=&quot;19&quot;&gt;19&lt;/option&gt;\n&lt;option value=&quot;20&quot;&gt;20&lt;/option&gt;\n&lt;option value=&quot;21&quot;&gt;21&lt;/option&gt;\n&lt;option value=&quot;22&quot;&gt;22&lt;/option&gt;\n&lt;option value=&quot;23&quot;&gt;23&lt;/option&gt;\n&lt;option value=&quot;24&quot;&gt;24&lt;/option&gt;\n&lt;option value=&quot;25&quot;&gt;25&lt;/option&gt;\n&lt;option value=&quot;26&quot;&gt;26&lt;/option&gt;\n&lt;option value=&quot;27&quot;&gt;27&lt;/option&gt;\n&lt;option value=&quot;28&quot;&gt;28&lt;/option&gt;\n&lt;option value=&quot;29&quot;&gt;29&lt;/option&gt;\n&lt;option value=&quot;30&quot;&gt;30&lt;/option&gt;\n&lt;option value=&quot;31&quot;&gt;31&lt;/option&gt;\n)
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+    
+    assert_dom_equal expected, select_day(16, :prompt=&gt;true)
+  end
+  
+  def test_select_day_with_custom_prompt
+    expected = %(&lt;select id=&quot;date_day&quot; name=&quot;date[day]&quot;&gt;\n)
+    expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Choose day&lt;/option&gt;\n&lt;option value=&quot;1&quot;&gt;1&lt;/option&gt;\n&lt;option value=&quot;2&quot;&gt;2&lt;/option&gt;\n&lt;option value=&quot;3&quot;&gt;3&lt;/option&gt;\n&lt;option value=&quot;4&quot;&gt;4&lt;/option&gt;\n&lt;option value=&quot;5&quot;&gt;5&lt;/option&gt;\n&lt;option value=&quot;6&quot;&gt;6&lt;/option&gt;\n&lt;option value=&quot;7&quot;&gt;7&lt;/option&gt;\n&lt;option value=&quot;8&quot;&gt;8&lt;/option&gt;\n&lt;option value=&quot;9&quot;&gt;9&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;10&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;11&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;12&lt;/option&gt;\n&lt;option value=&quot;13&quot;&gt;13&lt;/option&gt;\n&lt;option value=&quot;14&quot;&gt;14&lt;/option&gt;\n&lt;option value=&quot;15&quot;&gt;15&lt;/option&gt;\n&lt;option value=&quot;16&quot; selected=&quot;selected&quot;&gt;16&lt;/option&gt;\n&lt;option value=&quot;17&quot;&gt;17&lt;/option&gt;\n&lt;option value=&quot;18&quot;&gt;18&lt;/option&gt;\n&lt;option value=&quot;19&quot;&gt;19&lt;/option&gt;\n&lt;option value=&quot;20&quot;&gt;20&lt;/option&gt;\n&lt;option value=&quot;21&quot;&gt;21&lt;/option&gt;\n&lt;option value=&quot;22&quot;&gt;22&lt;/option&gt;\n&lt;option value=&quot;23&quot;&gt;23&lt;/option&gt;\n&lt;option value=&quot;24&quot;&gt;24&lt;/option&gt;\n&lt;option value=&quot;25&quot;&gt;25&lt;/option&gt;\n&lt;option value=&quot;26&quot;&gt;26&lt;/option&gt;\n&lt;option value=&quot;27&quot;&gt;27&lt;/option&gt;\n&lt;option value=&quot;28&quot;&gt;28&lt;/option&gt;\n&lt;option value=&quot;29&quot;&gt;29&lt;/option&gt;\n&lt;option value=&quot;30&quot;&gt;30&lt;/option&gt;\n&lt;option value=&quot;31&quot;&gt;31&lt;/option&gt;\n)
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+    
+    assert_dom_equal expected, select_day(16, :prompt=&gt;'Choose day')
+  end
 
   def test_select_month
     expected = %(&lt;select id=&quot;date_month&quot; name=&quot;date[month]&quot;&gt;\n)
@@ -275,6 +291,22 @@ class DateHelperTest &lt; ActionView::TestCase
     #assert result.include?('accesskey=&quot;M&quot;')
     #assert result.include?('&lt;option value=&quot;1&quot;&gt;January')
   end
+  
+  def test_select_month_with_default_prompt
+    expected = %(&lt;select id=&quot;date_month&quot; name=&quot;date[month]&quot;&gt;\n)
+    expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Month&lt;/option&gt;\n&lt;option value=&quot;1&quot;&gt;January&lt;/option&gt;\n&lt;option value=&quot;2&quot;&gt;February&lt;/option&gt;\n&lt;option value=&quot;3&quot;&gt;March&lt;/option&gt;\n&lt;option value=&quot;4&quot;&gt;April&lt;/option&gt;\n&lt;option value=&quot;5&quot;&gt;May&lt;/option&gt;\n&lt;option value=&quot;6&quot;&gt;June&lt;/option&gt;\n&lt;option value=&quot;7&quot;&gt;July&lt;/option&gt;\n&lt;option value=&quot;8&quot; selected=&quot;selected&quot;&gt;August&lt;/option&gt;\n&lt;option value=&quot;9&quot;&gt;September&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;October&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;November&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;December&lt;/option&gt;\n)
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    assert_dom_equal expected, select_month(8, :prompt=&gt;true)
+  end
+  
+  def test_select_month_with_custom_prompt
+    expected = %(&lt;select id=&quot;date_month&quot; name=&quot;date[month]&quot;&gt;\n)
+    expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Choose month&lt;/option&gt;\n&lt;option value=&quot;1&quot;&gt;January&lt;/option&gt;\n&lt;option value=&quot;2&quot;&gt;February&lt;/option&gt;\n&lt;option value=&quot;3&quot;&gt;March&lt;/option&gt;\n&lt;option value=&quot;4&quot;&gt;April&lt;/option&gt;\n&lt;option value=&quot;5&quot;&gt;May&lt;/option&gt;\n&lt;option value=&quot;6&quot;&gt;June&lt;/option&gt;\n&lt;option value=&quot;7&quot;&gt;July&lt;/option&gt;\n&lt;option value=&quot;8&quot; selected=&quot;selected&quot;&gt;August&lt;/option&gt;\n&lt;option value=&quot;9&quot;&gt;September&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;October&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;November&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;December&lt;/option&gt;\n)
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    assert_dom_equal expected, select_month(8, :prompt=&gt;'Choose month')
+  end
 
   def test_select_year
     expected = %(&lt;select id=&quot;date_year&quot; name=&quot;date[year]&quot;&gt;\n)
@@ -343,6 +375,22 @@ class DateHelperTest &lt; ActionView::TestCase
     #assert result.include?('accesskey=&quot;M&quot;')
     #assert result.include?('&lt;option value=&quot;2003&quot;')
   end
+  
+  def test_select_year_with_default_prompt
+    expected = %(&lt;select id=&quot;date_year&quot; name=&quot;date[year]&quot;&gt;\n)
+    expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Year&lt;/option&gt;\n&lt;option value=&quot;2003&quot;&gt;2003&lt;/option&gt;\n&lt;option value=&quot;2004&quot;&gt;2004&lt;/option&gt;\n&lt;option value=&quot;2005&quot;&gt;2005&lt;/option&gt;\n)
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    assert_dom_equal expected, select_year(nil, :start_year =&gt; 2003, :end_year =&gt; 2005, :prompt=&gt;true)
+  end
+  
+  def test_select_year_with_custom_prompt
+    expected = %(&lt;select id=&quot;date_year&quot; name=&quot;date[year]&quot;&gt;\n)
+    expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Choose year&lt;/option&gt;\n&lt;option value=&quot;2003&quot;&gt;2003&lt;/option&gt;\n&lt;option value=&quot;2004&quot;&gt;2004&lt;/option&gt;\n&lt;option value=&quot;2005&quot;&gt;2005&lt;/option&gt;\n)
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    assert_dom_equal expected, select_year(nil, :start_year =&gt; 2003, :end_year =&gt; 2005, :prompt=&gt;'Choose year')
+  end
 
   def test_select_hour
     expected = %(&lt;select id=&quot;date_hour&quot; name=&quot;date[hour]&quot;&gt;\n)
@@ -391,6 +439,22 @@ class DateHelperTest &lt; ActionView::TestCase
 
     assert_dom_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18), {}, :class =&gt; 'selector', :accesskey =&gt; 'M')
   end
+  
+  def test_select_hour_with_default_prompt
+    expected = %(&lt;select id=&quot;date_hour&quot; name=&quot;date[hour]&quot;&gt;\n)
+    expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Hour&lt;/option&gt;\n&lt;option value=&quot;00&quot;&gt;00&lt;/option&gt;\n&lt;option value=&quot;01&quot;&gt;01&lt;/option&gt;\n&lt;option value=&quot;02&quot;&gt;02&lt;/option&gt;\n&lt;option value=&quot;03&quot;&gt;03&lt;/option&gt;\n&lt;option value=&quot;04&quot;&gt;04&lt;/option&gt;\n&lt;option value=&quot;05&quot;&gt;05&lt;/option&gt;\n&lt;option value=&quot;06&quot;&gt;06&lt;/option&gt;\n&lt;option value=&quot;07&quot;&gt;07&lt;/option&gt;\n&lt;option value=&quot;08&quot; selected=&quot;selected&quot;&gt;08&lt;/option&gt;\n&lt;option value=&quot;09&quot;&gt;09&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;10&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;11&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;12&lt;/option&gt;\n&lt;option value=&quot;13&quot;&gt;13&lt;/option&gt;\n&lt;option value=&quot;14&quot;&gt;14&lt;/option&gt;\n&lt;option value=&quot;15&quot;&gt;15&lt;/option&gt;\n&lt;option value=&quot;16&quot;&gt;16&lt;/option&gt;\n&lt;option value=&quot;17&quot;&gt;17&lt;/option&gt;\n&lt;option value=&quot;18&quot;&gt;18&lt;/option&gt;\n&lt;option value=&quot;19&quot;&gt;19&lt;/option&gt;\n&lt;option value=&quot;20&quot;&gt;20&lt;/option&gt;\n&lt;option value=&quot;21&quot;&gt;21&lt;/option&gt;\n&lt;option value=&quot;22&quot;&gt;22&lt;/option&gt;\n&lt;option value=&quot;23&quot;&gt;23&lt;/option&gt;\n)
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    assert_dom_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18), :prompt=&gt;true)
+  end
+  
+  def test_select_hour_with_custom_prompt
+    expected = %(&lt;select id=&quot;date_hour&quot; name=&quot;date[hour]&quot;&gt;\n)
+    expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Choose hour&lt;/option&gt;\n&lt;option value=&quot;00&quot;&gt;00&lt;/option&gt;\n&lt;option value=&quot;01&quot;&gt;01&lt;/option&gt;\n&lt;option value=&quot;02&quot;&gt;02&lt;/option&gt;\n&lt;option value=&quot;03&quot;&gt;03&lt;/option&gt;\n&lt;option value=&quot;04&quot;&gt;04&lt;/option&gt;\n&lt;option value=&quot;05&quot;&gt;05&lt;/option&gt;\n&lt;option value=&quot;06&quot;&gt;06&lt;/option&gt;\n&lt;option value=&quot;07&quot;&gt;07&lt;/option&gt;\n&lt;option value=&quot;08&quot; selected=&quot;selected&quot;&gt;08&lt;/option&gt;\n&lt;option value=&quot;09&quot;&gt;09&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;10&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;11&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;12&lt;/option&gt;\n&lt;option value=&quot;13&quot;&gt;13&lt;/option&gt;\n&lt;option value=&quot;14&quot;&gt;14&lt;/option&gt;\n&lt;option value=&quot;15&quot;&gt;15&lt;/option&gt;\n&lt;option value=&quot;16&quot;&gt;16&lt;/option&gt;\n&lt;option value=&quot;17&quot;&gt;17&lt;/option&gt;\n&lt;option value=&quot;18&quot;&gt;18&lt;/option&gt;\n&lt;option value=&quot;19&quot;&gt;19&lt;/option&gt;\n&lt;option value=&quot;20&quot;&gt;20&lt;/option&gt;\n&lt;option value=&quot;21&quot;&gt;21&lt;/option&gt;\n&lt;option value=&quot;22&quot;&gt;22&lt;/option&gt;\n&lt;option value=&quot;23&quot;&gt;23&lt;/option&gt;\n)
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    assert_dom_equal expected, select_hour(Time.mktime(2003, 8, 16, 8, 4, 18), :prompt=&gt;'Choose hour')
+  end
 
   def test_select_minute
     expected = %(&lt;select id=&quot;date_minute&quot; name=&quot;date[minute]&quot;&gt;\n)
@@ -469,6 +533,22 @@ class DateHelperTest &lt; ActionView::TestCase
     #assert result.include?('accesskey=&quot;M&quot;')
     #assert result.include?('&lt;option value=&quot;00&quot;&gt;00')
   end
+  
+  def test_select_minute_with_default_prompt
+    expected = %(&lt;select id=&quot;date_minute&quot; name=&quot;date[minute]&quot;&gt;\n)
+    expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Minute&lt;/option&gt;\n&lt;option value=&quot;00&quot;&gt;00&lt;/option&gt;\n&lt;option value=&quot;01&quot;&gt;01&lt;/option&gt;\n&lt;option value=&quot;02&quot;&gt;02&lt;/option&gt;\n&lt;option value=&quot;03&quot;&gt;03&lt;/option&gt;\n&lt;option value=&quot;04&quot; selected=&quot;selected&quot;&gt;04&lt;/option&gt;\n&lt;option value=&quot;05&quot;&gt;05&lt;/option&gt;\n&lt;option value=&quot;06&quot;&gt;06&lt;/option&gt;\n&lt;option value=&quot;07&quot;&gt;07&lt;/option&gt;\n&lt;option value=&quot;08&quot;&gt;08&lt;/option&gt;\n&lt;option value=&quot;09&quot;&gt;09&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;10&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;11&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;12&lt;/option&gt;\n&lt;option value=&quot;13&quot;&gt;13&lt;/option&gt;\n&lt;option value=&quot;14&quot;&gt;14&lt;/option&gt;\n&lt;option value=&quot;15&quot;&gt;15&lt;/option&gt;\n&lt;option value=&quot;16&quot;&gt;16&lt;/option&gt;\n&lt;option value=&quot;17&quot;&gt;17&lt;/option&gt;\n&lt;option value=&quot;18&quot;&gt;18&lt;/option&gt;\n&lt;option value=&quot;19&quot;&gt;19&lt;/option&gt;\n&lt;option value=&quot;20&quot;&gt;20&lt;/option&gt;\n&lt;option value=&quot;21&quot;&gt;21&lt;/option&gt;\n&lt;option value=&quot;22&quot;&gt;22&lt;/option&gt;\n&lt;option value=&quot;23&quot;&gt;23&lt;/option&gt;\n&lt;option value=&quot;24&quot;&gt;24&lt;/option&gt;\n&lt;option value=&quot;25&quot;&gt;25&lt;/option&gt;\n&lt;option value=&quot;26&quot;&gt;26&lt;/option&gt;\n&lt;option value=&quot;27&quot;&gt;27&lt;/option&gt;\n&lt;option value=&quot;28&quot;&gt;28&lt;/option&gt;\n&lt;option value=&quot;29&quot;&gt;29&lt;/option&gt;\n&lt;option value=&quot;30&quot;&gt;30&lt;/option&gt;\n&lt;option value=&quot;31&quot;&gt;31&lt;/option&gt;\n&lt;option value=&quot;32&quot;&gt;32&lt;/option&gt;\n&lt;option value=&quot;33&quot;&gt;33&lt;/option&gt;\n&lt;option value=&quot;34&quot;&gt;34&lt;/option&gt;\n&lt;option value=&quot;35&quot;&gt;35&lt;/option&gt;\n&lt;option value=&quot;36&quot;&gt;36&lt;/option&gt;\n&lt;option value=&quot;37&quot;&gt;37&lt;/option&gt;\n&lt;option value=&quot;38&quot;&gt;38&lt;/option&gt;\n&lt;option value=&quot;39&quot;&gt;39&lt;/option&gt;\n&lt;option value=&quot;40&quot;&gt;40&lt;/option&gt;\n&lt;option value=&quot;41&quot;&gt;41&lt;/option&gt;\n&lt;option value=&quot;42&quot;&gt;42&lt;/option&gt;\n&lt;option value=&quot;43&quot;&gt;43&lt;/option&gt;\n&lt;option value=&quot;44&quot;&gt;44&lt;/option&gt;\n&lt;option value=&quot;45&quot;&gt;45&lt;/option&gt;\n&lt;option value=&quot;46&quot;&gt;46&lt;/option&gt;\n&lt;option value=&quot;47&quot;&gt;47&lt;/option&gt;\n&lt;option value=&quot;48&quot;&gt;48&lt;/option&gt;\n&lt;option value=&quot;49&quot;&gt;49&lt;/option&gt;\n&lt;option value=&quot;50&quot;&gt;50&lt;/option&gt;\n&lt;option value=&quot;51&quot;&gt;51&lt;/option&gt;\n&lt;option value=&quot;52&quot;&gt;52&lt;/option&gt;\n&lt;option value=&quot;53&quot;&gt;53&lt;/option&gt;\n&lt;option value=&quot;54&quot;&gt;54&lt;/option&gt;\n&lt;option value=&quot;55&quot;&gt;55&lt;/option&gt;\n&lt;option value=&quot;56&quot;&gt;56&lt;/option&gt;\n&lt;option value=&quot;57&quot;&gt;57&lt;/option&gt;\n&lt;option value=&quot;58&quot;&gt;58&lt;/option&gt;\n&lt;option value=&quot;59&quot;&gt;59&lt;/option&gt;\n)
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    assert_dom_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), :prompt=&gt;true)
+  end
+  
+  def test_select_minute_with_custom_prompt
+    expected = %(&lt;select id=&quot;date_minute&quot; name=&quot;date[minute]&quot;&gt;\n)
+    expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Choose minute&lt;/option&gt;\n&lt;option value=&quot;00&quot;&gt;00&lt;/option&gt;\n&lt;option value=&quot;01&quot;&gt;01&lt;/option&gt;\n&lt;option value=&quot;02&quot;&gt;02&lt;/option&gt;\n&lt;option value=&quot;03&quot;&gt;03&lt;/option&gt;\n&lt;option value=&quot;04&quot; selected=&quot;selected&quot;&gt;04&lt;/option&gt;\n&lt;option value=&quot;05&quot;&gt;05&lt;/option&gt;\n&lt;option value=&quot;06&quot;&gt;06&lt;/option&gt;\n&lt;option value=&quot;07&quot;&gt;07&lt;/option&gt;\n&lt;option value=&quot;08&quot;&gt;08&lt;/option&gt;\n&lt;option value=&quot;09&quot;&gt;09&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;10&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;11&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;12&lt;/option&gt;\n&lt;option value=&quot;13&quot;&gt;13&lt;/option&gt;\n&lt;option value=&quot;14&quot;&gt;14&lt;/option&gt;\n&lt;option value=&quot;15&quot;&gt;15&lt;/option&gt;\n&lt;option value=&quot;16&quot;&gt;16&lt;/option&gt;\n&lt;option value=&quot;17&quot;&gt;17&lt;/option&gt;\n&lt;option value=&quot;18&quot;&gt;18&lt;/option&gt;\n&lt;option value=&quot;19&quot;&gt;19&lt;/option&gt;\n&lt;option value=&quot;20&quot;&gt;20&lt;/option&gt;\n&lt;option value=&quot;21&quot;&gt;21&lt;/option&gt;\n&lt;option value=&quot;22&quot;&gt;22&lt;/option&gt;\n&lt;option value=&quot;23&quot;&gt;23&lt;/option&gt;\n&lt;option value=&quot;24&quot;&gt;24&lt;/option&gt;\n&lt;option value=&quot;25&quot;&gt;25&lt;/option&gt;\n&lt;option value=&quot;26&quot;&gt;26&lt;/option&gt;\n&lt;option value=&quot;27&quot;&gt;27&lt;/option&gt;\n&lt;option value=&quot;28&quot;&gt;28&lt;/option&gt;\n&lt;option value=&quot;29&quot;&gt;29&lt;/option&gt;\n&lt;option value=&quot;30&quot;&gt;30&lt;/option&gt;\n&lt;option value=&quot;31&quot;&gt;31&lt;/option&gt;\n&lt;option value=&quot;32&quot;&gt;32&lt;/option&gt;\n&lt;option value=&quot;33&quot;&gt;33&lt;/option&gt;\n&lt;option value=&quot;34&quot;&gt;34&lt;/option&gt;\n&lt;option value=&quot;35&quot;&gt;35&lt;/option&gt;\n&lt;option value=&quot;36&quot;&gt;36&lt;/option&gt;\n&lt;option value=&quot;37&quot;&gt;37&lt;/option&gt;\n&lt;option value=&quot;38&quot;&gt;38&lt;/option&gt;\n&lt;option value=&quot;39&quot;&gt;39&lt;/option&gt;\n&lt;option value=&quot;40&quot;&gt;40&lt;/option&gt;\n&lt;option value=&quot;41&quot;&gt;41&lt;/option&gt;\n&lt;option value=&quot;42&quot;&gt;42&lt;/option&gt;\n&lt;option value=&quot;43&quot;&gt;43&lt;/option&gt;\n&lt;option value=&quot;44&quot;&gt;44&lt;/option&gt;\n&lt;option value=&quot;45&quot;&gt;45&lt;/option&gt;\n&lt;option value=&quot;46&quot;&gt;46&lt;/option&gt;\n&lt;option value=&quot;47&quot;&gt;47&lt;/option&gt;\n&lt;option value=&quot;48&quot;&gt;48&lt;/option&gt;\n&lt;option value=&quot;49&quot;&gt;49&lt;/option&gt;\n&lt;option value=&quot;50&quot;&gt;50&lt;/option&gt;\n&lt;option value=&quot;51&quot;&gt;51&lt;/option&gt;\n&lt;option value=&quot;52&quot;&gt;52&lt;/option&gt;\n&lt;option value=&quot;53&quot;&gt;53&lt;/option&gt;\n&lt;option value=&quot;54&quot;&gt;54&lt;/option&gt;\n&lt;option value=&quot;55&quot;&gt;55&lt;/option&gt;\n&lt;option value=&quot;56&quot;&gt;56&lt;/option&gt;\n&lt;option value=&quot;57&quot;&gt;57&lt;/option&gt;\n&lt;option value=&quot;58&quot;&gt;58&lt;/option&gt;\n&lt;option value=&quot;59&quot;&gt;59&lt;/option&gt;\n)
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    assert_dom_equal expected, select_minute(Time.mktime(2003, 8, 16, 8, 4, 18), :prompt=&gt;'Choose minute')
+  end
 
   def test_select_second
     expected = %(&lt;select id=&quot;date_second&quot; name=&quot;date[second]&quot;&gt;\n)
@@ -523,7 +603,23 @@ class DateHelperTest &lt; ActionView::TestCase
     #assert result.include?('accesskey=&quot;M&quot;')
     #assert result.include?('&lt;option value=&quot;00&quot;&gt;00')
   end
+  
+  def test_select_second_with_default_prompt
+    expected = %(&lt;select id=&quot;date_second&quot; name=&quot;date[second]&quot;&gt;\n)
+    expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Seconds&lt;/option&gt;\n&lt;option value=&quot;00&quot;&gt;00&lt;/option&gt;\n&lt;option value=&quot;01&quot;&gt;01&lt;/option&gt;\n&lt;option value=&quot;02&quot;&gt;02&lt;/option&gt;\n&lt;option value=&quot;03&quot;&gt;03&lt;/option&gt;\n&lt;option value=&quot;04&quot;&gt;04&lt;/option&gt;\n&lt;option value=&quot;05&quot;&gt;05&lt;/option&gt;\n&lt;option value=&quot;06&quot;&gt;06&lt;/option&gt;\n&lt;option value=&quot;07&quot;&gt;07&lt;/option&gt;\n&lt;option value=&quot;08&quot;&gt;08&lt;/option&gt;\n&lt;option value=&quot;09&quot;&gt;09&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;10&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;11&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;12&lt;/option&gt;\n&lt;option value=&quot;13&quot;&gt;13&lt;/option&gt;\n&lt;option value=&quot;14&quot;&gt;14&lt;/option&gt;\n&lt;option value=&quot;15&quot;&gt;15&lt;/option&gt;\n&lt;option value=&quot;16&quot;&gt;16&lt;/option&gt;\n&lt;option value=&quot;17&quot;&gt;17&lt;/option&gt;\n&lt;option value=&quot;18&quot; selected=&quot;selected&quot;&gt;18&lt;/option&gt;\n&lt;option value=&quot;19&quot;&gt;19&lt;/option&gt;\n&lt;option value=&quot;20&quot;&gt;20&lt;/option&gt;\n&lt;option value=&quot;21&quot;&gt;21&lt;/option&gt;\n&lt;option value=&quot;22&quot;&gt;22&lt;/option&gt;\n&lt;option value=&quot;23&quot;&gt;23&lt;/option&gt;\n&lt;option value=&quot;24&quot;&gt;24&lt;/option&gt;\n&lt;option value=&quot;25&quot;&gt;25&lt;/option&gt;\n&lt;option value=&quot;26&quot;&gt;26&lt;/option&gt;\n&lt;option value=&quot;27&quot;&gt;27&lt;/option&gt;\n&lt;option value=&quot;28&quot;&gt;28&lt;/option&gt;\n&lt;option value=&quot;29&quot;&gt;29&lt;/option&gt;\n&lt;option value=&quot;30&quot;&gt;30&lt;/option&gt;\n&lt;option value=&quot;31&quot;&gt;31&lt;/option&gt;\n&lt;option value=&quot;32&quot;&gt;32&lt;/option&gt;\n&lt;option value=&quot;33&quot;&gt;33&lt;/option&gt;\n&lt;option value=&quot;34&quot;&gt;34&lt;/option&gt;\n&lt;option value=&quot;35&quot;&gt;35&lt;/option&gt;\n&lt;option value=&quot;36&quot;&gt;36&lt;/option&gt;\n&lt;option value=&quot;37&quot;&gt;37&lt;/option&gt;\n&lt;option value=&quot;38&quot;&gt;38&lt;/option&gt;\n&lt;option value=&quot;39&quot;&gt;39&lt;/option&gt;\n&lt;option value=&quot;40&quot;&gt;40&lt;/option&gt;\n&lt;option value=&quot;41&quot;&gt;41&lt;/option&gt;\n&lt;option value=&quot;42&quot;&gt;42&lt;/option&gt;\n&lt;option value=&quot;43&quot;&gt;43&lt;/option&gt;\n&lt;option value=&quot;44&quot;&gt;44&lt;/option&gt;\n&lt;option value=&quot;45&quot;&gt;45&lt;/option&gt;\n&lt;option value=&quot;46&quot;&gt;46&lt;/option&gt;\n&lt;option value=&quot;47&quot;&gt;47&lt;/option&gt;\n&lt;option value=&quot;48&quot;&gt;48&lt;/option&gt;\n&lt;option value=&quot;49&quot;&gt;49&lt;/option&gt;\n&lt;option value=&quot;50&quot;&gt;50&lt;/option&gt;\n&lt;option value=&quot;51&quot;&gt;51&lt;/option&gt;\n&lt;option value=&quot;52&quot;&gt;52&lt;/option&gt;\n&lt;option value=&quot;53&quot;&gt;53&lt;/option&gt;\n&lt;option value=&quot;54&quot;&gt;54&lt;/option&gt;\n&lt;option value=&quot;55&quot;&gt;55&lt;/option&gt;\n&lt;option value=&quot;56&quot;&gt;56&lt;/option&gt;\n&lt;option value=&quot;57&quot;&gt;57&lt;/option&gt;\n&lt;option value=&quot;58&quot;&gt;58&lt;/option&gt;\n&lt;option value=&quot;59&quot;&gt;59&lt;/option&gt;\n)
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    assert_dom_equal expected, select_second(Time.mktime(2003, 8, 16, 8, 4, 18), :prompt=&gt;true)
+  end
+  
+  def test_select_second_with_custom_prompt
+    expected = %(&lt;select id=&quot;date_second&quot; name=&quot;date[second]&quot;&gt;\n)
+    expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Choose seconds&lt;/option&gt;\n&lt;option value=&quot;00&quot;&gt;00&lt;/option&gt;\n&lt;option value=&quot;01&quot;&gt;01&lt;/option&gt;\n&lt;option value=&quot;02&quot;&gt;02&lt;/option&gt;\n&lt;option value=&quot;03&quot;&gt;03&lt;/option&gt;\n&lt;option value=&quot;04&quot;&gt;04&lt;/option&gt;\n&lt;option value=&quot;05&quot;&gt;05&lt;/option&gt;\n&lt;option value=&quot;06&quot;&gt;06&lt;/option&gt;\n&lt;option value=&quot;07&quot;&gt;07&lt;/option&gt;\n&lt;option value=&quot;08&quot;&gt;08&lt;/option&gt;\n&lt;option value=&quot;09&quot;&gt;09&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;10&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;11&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;12&lt;/option&gt;\n&lt;option value=&quot;13&quot;&gt;13&lt;/option&gt;\n&lt;option value=&quot;14&quot;&gt;14&lt;/option&gt;\n&lt;option value=&quot;15&quot;&gt;15&lt;/option&gt;\n&lt;option value=&quot;16&quot;&gt;16&lt;/option&gt;\n&lt;option value=&quot;17&quot;&gt;17&lt;/option&gt;\n&lt;option value=&quot;18&quot; selected=&quot;selected&quot;&gt;18&lt;/option&gt;\n&lt;option value=&quot;19&quot;&gt;19&lt;/option&gt;\n&lt;option value=&quot;20&quot;&gt;20&lt;/option&gt;\n&lt;option value=&quot;21&quot;&gt;21&lt;/option&gt;\n&lt;option value=&quot;22&quot;&gt;22&lt;/option&gt;\n&lt;option value=&quot;23&quot;&gt;23&lt;/option&gt;\n&lt;option value=&quot;24&quot;&gt;24&lt;/option&gt;\n&lt;option value=&quot;25&quot;&gt;25&lt;/option&gt;\n&lt;option value=&quot;26&quot;&gt;26&lt;/option&gt;\n&lt;option value=&quot;27&quot;&gt;27&lt;/option&gt;\n&lt;option value=&quot;28&quot;&gt;28&lt;/option&gt;\n&lt;option value=&quot;29&quot;&gt;29&lt;/option&gt;\n&lt;option value=&quot;30&quot;&gt;30&lt;/option&gt;\n&lt;option value=&quot;31&quot;&gt;31&lt;/option&gt;\n&lt;option value=&quot;32&quot;&gt;32&lt;/option&gt;\n&lt;option value=&quot;33&quot;&gt;33&lt;/option&gt;\n&lt;option value=&quot;34&quot;&gt;34&lt;/option&gt;\n&lt;option value=&quot;35&quot;&gt;35&lt;/option&gt;\n&lt;option value=&quot;36&quot;&gt;36&lt;/option&gt;\n&lt;option value=&quot;37&quot;&gt;37&lt;/option&gt;\n&lt;option value=&quot;38&quot;&gt;38&lt;/option&gt;\n&lt;option value=&quot;39&quot;&gt;39&lt;/option&gt;\n&lt;option value=&quot;40&quot;&gt;40&lt;/option&gt;\n&lt;option value=&quot;41&quot;&gt;41&lt;/option&gt;\n&lt;option value=&quot;42&quot;&gt;42&lt;/option&gt;\n&lt;option value=&quot;43&quot;&gt;43&lt;/option&gt;\n&lt;option value=&quot;44&quot;&gt;44&lt;/option&gt;\n&lt;option value=&quot;45&quot;&gt;45&lt;/option&gt;\n&lt;option value=&quot;46&quot;&gt;46&lt;/option&gt;\n&lt;option value=&quot;47&quot;&gt;47&lt;/option&gt;\n&lt;option value=&quot;48&quot;&gt;48&lt;/option&gt;\n&lt;option value=&quot;49&quot;&gt;49&lt;/option&gt;\n&lt;option value=&quot;50&quot;&gt;50&lt;/option&gt;\n&lt;option value=&quot;51&quot;&gt;51&lt;/option&gt;\n&lt;option value=&quot;52&quot;&gt;52&lt;/option&gt;\n&lt;option value=&quot;53&quot;&gt;53&lt;/option&gt;\n&lt;option value=&quot;54&quot;&gt;54&lt;/option&gt;\n&lt;option value=&quot;55&quot;&gt;55&lt;/option&gt;\n&lt;option value=&quot;56&quot;&gt;56&lt;/option&gt;\n&lt;option value=&quot;57&quot;&gt;57&lt;/option&gt;\n&lt;option value=&quot;58&quot;&gt;58&lt;/option&gt;\n&lt;option value=&quot;59&quot;&gt;59&lt;/option&gt;\n)
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
 
+    assert_dom_equal expected, select_second(Time.mktime(2003, 8, 16, 8, 4, 18), :prompt=&gt;'Choose seconds')
+  end
+  
   def test_select_date
     expected =  %(&lt;select id=&quot;date_first_year&quot; name=&quot;date[first][year]&quot;&gt;\n)
     expected &lt;&lt; %(&lt;option value=&quot;2003&quot; selected=&quot;selected&quot;&gt;2003&lt;/option&gt;\n&lt;option value=&quot;2004&quot;&gt;2004&lt;/option&gt;\n&lt;option value=&quot;2005&quot;&gt;2005&lt;/option&gt;\n)
@@ -856,6 +952,55 @@ class DateHelperTest &lt; ActionView::TestCase
 
     assert_dom_equal expected, select_datetime(Time.mktime(2003, 8, 16, 8, 4, 18), {:start_year =&gt; 2003, :end_year =&gt; 2005, :prefix =&gt; &quot;date[first]&quot;}, :class =&gt; 'selector')
   end
+  
+  def test_select_datetime_with_default_prompt
+    expected =  %(&lt;select id=&quot;date_first_year&quot; name=&quot;date[first][year]&quot;&gt;\n)
+    expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Year&lt;/option&gt;\n&lt;option value=&quot;2003&quot; selected=&quot;selected&quot;&gt;2003&lt;/option&gt;\n&lt;option value=&quot;2004&quot;&gt;2004&lt;/option&gt;\n&lt;option value=&quot;2005&quot;&gt;2005&lt;/option&gt;\n)
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    expected &lt;&lt; %(&lt;select id=&quot;date_first_month&quot; name=&quot;date[first][month]&quot;&gt;\n)
+    expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Month&lt;/option&gt;\n&lt;option value=&quot;1&quot;&gt;January&lt;/option&gt;\n&lt;option value=&quot;2&quot;&gt;February&lt;/option&gt;\n&lt;option value=&quot;3&quot;&gt;March&lt;/option&gt;\n&lt;option value=&quot;4&quot;&gt;April&lt;/option&gt;\n&lt;option value=&quot;5&quot;&gt;May&lt;/option&gt;\n&lt;option value=&quot;6&quot;&gt;June&lt;/option&gt;\n&lt;option value=&quot;7&quot;&gt;July&lt;/option&gt;\n&lt;option value=&quot;8&quot; selected=&quot;selected&quot;&gt;August&lt;/option&gt;\n&lt;option value=&quot;9&quot;&gt;September&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;October&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;November&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;December&lt;/option&gt;\n)
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    expected &lt;&lt; %(&lt;select id=&quot;date_first_day&quot; name=&quot;date[first][day]&quot;&gt;\n)
+    expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Day&lt;/option&gt;\n&lt;option value=&quot;1&quot;&gt;1&lt;/option&gt;\n&lt;option value=&quot;2&quot;&gt;2&lt;/option&gt;\n&lt;option value=&quot;3&quot;&gt;3&lt;/option&gt;\n&lt;option value=&quot;4&quot;&gt;4&lt;/option&gt;\n&lt;option value=&quot;5&quot;&gt;5&lt;/option&gt;\n&lt;option value=&quot;6&quot;&gt;6&lt;/option&gt;\n&lt;option value=&quot;7&quot;&gt;7&lt;/option&gt;\n&lt;option value=&quot;8&quot;&gt;8&lt;/option&gt;\n&lt;option value=&quot;9&quot;&gt;9&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;10&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;11&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;12&lt;/option&gt;\n&lt;option value=&quot;13&quot;&gt;13&lt;/option&gt;\n&lt;option value=&quot;14&quot;&gt;14&lt;/option&gt;\n&lt;option value=&quot;15&quot;&gt;15&lt;/option&gt;\n&lt;option value=&quot;16&quot; selected=&quot;selected&quot;&gt;16&lt;/option&gt;\n&lt;option value=&quot;17&quot;&gt;17&lt;/option&gt;\n&lt;option value=&quot;18&quot;&gt;18&lt;/option&gt;\n&lt;option value=&quot;19&quot;&gt;19&lt;/option&gt;\n&lt;option value=&quot;20&quot;&gt;20&lt;/option&gt;\n&lt;option value=&quot;21&quot;&gt;21&lt;/option&gt;\n&lt;option value=&quot;22&quot;&gt;22&lt;/option&gt;\n&lt;option value=&quot;23&quot;&gt;23&lt;/option&gt;\n&lt;option value=&quot;24&quot;&gt;24&lt;/option&gt;\n&lt;option value=&quot;25&quot;&gt;25&lt;/option&gt;\n&lt;option value=&quot;26&quot;&gt;26&lt;/option&gt;\n&lt;option value=&quot;27&quot;&gt;27&lt;/option&gt;\n&lt;option value=&quot;28&quot;&gt;28&lt;/option&gt;\n&lt;option value=&quot;29&quot;&gt;29&lt;/option&gt;\n&lt;option value=&quot;30&quot;&gt;30&lt;/option&gt;\n&lt;option value=&quot;31&quot;&gt;31&lt;/option&gt;\n)
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    expected &lt;&lt; %(&lt;select id=&quot;date_first_hour&quot; name=&quot;date[first][hour]&quot;&gt;\n)
+    expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Hour&lt;/option&gt;\n&lt;option value=&quot;00&quot;&gt;00&lt;/option&gt;\n&lt;option value=&quot;01&quot;&gt;01&lt;/option&gt;\n&lt;option value=&quot;02&quot;&gt;02&lt;/option&gt;\n&lt;option value=&quot;03&quot;&gt;03&lt;/option&gt;\n&lt;option value=&quot;04&quot;&gt;04&lt;/option&gt;\n&lt;option value=&quot;05&quot;&gt;05&lt;/option&gt;\n&lt;option value=&quot;06&quot;&gt;06&lt;/option&gt;\n&lt;option value=&quot;07&quot;&gt;07&lt;/option&gt;\n&lt;option value=&quot;08&quot; selected=&quot;selected&quot;&gt;08&lt;/option&gt;\n&lt;option value=&quot;09&quot;&gt;09&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;10&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;11&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;12&lt;/option&gt;\n&lt;option value=&quot;13&quot;&gt;13&lt;/option&gt;\n&lt;option value=&quot;14&quot;&gt;14&lt;/option&gt;\n&lt;option value=&quot;15&quot;&gt;15&lt;/option&gt;\n&lt;option value=&quot;16&quot;&gt;16&lt;/option&gt;\n&lt;option value=&quot;17&quot;&gt;17&lt;/option&gt;\n&lt;option value=&quot;18&quot;&gt;18&lt;/option&gt;\n&lt;option value=&quot;19&quot;&gt;19&lt;/option&gt;\n&lt;option value=&quot;20&quot;&gt;20&lt;/option&gt;\n&lt;option value=&quot;21&quot;&gt;21&lt;/option&gt;\n&lt;option value=&quot;22&quot;&gt;22&lt;/option&gt;\n&lt;option value=&quot;23&quot;&gt;23&lt;/option&gt;\n)
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    expected &lt;&lt; %(&lt;select id=&quot;date_first_minute&quot; name=&quot;date[first][minute]&quot;&gt;\n)
+    expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Minute&lt;/option&gt;\n&lt;option value=&quot;00&quot;&gt;00&lt;/option&gt;\n&lt;option value=&quot;01&quot;&gt;01&lt;/option&gt;\n&lt;option value=&quot;02&quot;&gt;02&lt;/option&gt;\n&lt;option value=&quot;03&quot;&gt;03&lt;/option&gt;\n&lt;option value=&quot;04&quot; selected=&quot;selected&quot;&gt;04&lt;/option&gt;\n&lt;option value=&quot;05&quot;&gt;05&lt;/option&gt;\n&lt;option value=&quot;06&quot;&gt;06&lt;/option&gt;\n&lt;option value=&quot;07&quot;&gt;07&lt;/option&gt;\n&lt;option value=&quot;08&quot;&gt;08&lt;/option&gt;\n&lt;option value=&quot;09&quot;&gt;09&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;10&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;11&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;12&lt;/option&gt;\n&lt;option value=&quot;13&quot;&gt;13&lt;/option&gt;\n&lt;option value=&quot;14&quot;&gt;14&lt;/option&gt;\n&lt;option value=&quot;15&quot;&gt;15&lt;/option&gt;\n&lt;option value=&quot;16&quot;&gt;16&lt;/option&gt;\n&lt;option value=&quot;17&quot;&gt;17&lt;/option&gt;\n&lt;option value=&quot;18&quot;&gt;18&lt;/option&gt;\n&lt;option value=&quot;19&quot;&gt;19&lt;/option&gt;\n&lt;option value=&quot;20&quot;&gt;20&lt;/option&gt;\n&lt;option value=&quot;21&quot;&gt;21&lt;/option&gt;\n&lt;option value=&quot;22&quot;&gt;22&lt;/option&gt;\n&lt;option value=&quot;23&quot;&gt;23&lt;/option&gt;\n&lt;option value=&quot;24&quot;&gt;24&lt;/option&gt;\n&lt;option value=&quot;25&quot;&gt;25&lt;/option&gt;\n&lt;option value=&quot;26&quot;&gt;26&lt;/option&gt;\n&lt;option value=&quot;27&quot;&gt;27&lt;/option&gt;\n&lt;option value=&quot;28&quot;&gt;28&lt;/option&gt;\n&lt;option value=&quot;29&quot;&gt;29&lt;/option&gt;\n&lt;option value=&quot;30&quot;&gt;30&lt;/option&gt;\n&lt;option value=&quot;31&quot;&gt;31&lt;/option&gt;\n&lt;option value=&quot;32&quot;&gt;32&lt;/option&gt;\n&lt;option value=&quot;33&quot;&gt;33&lt;/option&gt;\n&lt;option value=&quot;34&quot;&gt;34&lt;/option&gt;\n&lt;option value=&quot;35&quot;&gt;35&lt;/option&gt;\n&lt;option value=&quot;36&quot;&gt;36&lt;/option&gt;\n&lt;option value=&quot;37&quot;&gt;37&lt;/option&gt;\n&lt;option value=&quot;38&quot;&gt;38&lt;/option&gt;\n&lt;option value=&quot;39&quot;&gt;39&lt;/option&gt;\n&lt;option value=&quot;40&quot;&gt;40&lt;/option&gt;\n&lt;option value=&quot;41&quot;&gt;41&lt;/option&gt;\n&lt;option value=&quot;42&quot;&gt;42&lt;/option&gt;\n&lt;option value=&quot;43&quot;&gt;43&lt;/option&gt;\n&lt;option value=&quot;44&quot;&gt;44&lt;/option&gt;\n&lt;option value=&quot;45&quot;&gt;45&lt;/option&gt;\n&lt;option value=&quot;46&quot;&gt;46&lt;/option&gt;\n&lt;option value=&quot;47&quot;&gt;47&lt;/option&gt;\n&lt;option value=&quot;48&quot;&gt;48&lt;/option&gt;\n&lt;option value=&quot;49&quot;&gt;49&lt;/option&gt;\n&lt;option value=&quot;50&quot;&gt;50&lt;/option&gt;\n&lt;option value=&quot;51&quot;&gt;51&lt;/option&gt;\n&lt;option value=&quot;52&quot;&gt;52&lt;/option&gt;\n&lt;option value=&quot;53&quot;&gt;53&lt;/option&gt;\n&lt;option value=&quot;54&quot;&gt;54&lt;/option&gt;\n&lt;option value=&quot;55&quot;&gt;55&lt;/option&gt;\n&lt;option value=&quot;56&quot;&gt;56&lt;/option&gt;\n&lt;option value=&quot;57&quot;&gt;57&lt;/option&gt;\n&lt;option value=&quot;58&quot;&gt;58&lt;/option&gt;\n&lt;option value=&quot;59&quot;&gt;59&lt;/option&gt;\n)
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    assert_dom_equal expected, select_datetime(Time.mktime(2003, 8, 16, 8, 4, 18), :start_year =&gt; 2003, :end_year =&gt; 2005, :prefix =&gt; &quot;date[first]&quot;, :prompt=&gt;true)
+  end
+  
+  def test_select_datetime_with_custom_prompt
+
+    expected =  %(&lt;select id=&quot;date_first_year&quot; name=&quot;date[first][year]&quot;&gt;\n)
+    expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Choose year&lt;/option&gt;\n&lt;option value=&quot;2003&quot; selected=&quot;selected&quot;&gt;2003&lt;/option&gt;\n&lt;option value=&quot;2004&quot;&gt;2004&lt;/option&gt;\n&lt;option value=&quot;2005&quot;&gt;2005&lt;/option&gt;\n)
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    expected &lt;&lt; %(&lt;select id=&quot;date_first_month&quot; name=&quot;date[first][month]&quot;&gt;\n)
+    expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Choose month&lt;/option&gt;\n&lt;option value=&quot;1&quot;&gt;January&lt;/option&gt;\n&lt;option value=&quot;2&quot;&gt;February&lt;/option&gt;\n&lt;option value=&quot;3&quot;&gt;March&lt;/option&gt;\n&lt;option value=&quot;4&quot;&gt;April&lt;/option&gt;\n&lt;option value=&quot;5&quot;&gt;May&lt;/option&gt;\n&lt;option value=&quot;6&quot;&gt;June&lt;/option&gt;\n&lt;option value=&quot;7&quot;&gt;July&lt;/option&gt;\n&lt;option value=&quot;8&quot; selected=&quot;selected&quot;&gt;August&lt;/option&gt;\n&lt;option value=&quot;9&quot;&gt;September&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;October&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;November&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;December&lt;/option&gt;\n)
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    expected &lt;&lt; %(&lt;select id=&quot;date_first_day&quot; name=&quot;date[first][day]&quot;&gt;\n)
+    expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Choose day&lt;/option&gt;\n&lt;option value=&quot;1&quot;&gt;1&lt;/option&gt;\n&lt;option value=&quot;2&quot;&gt;2&lt;/option&gt;\n&lt;option value=&quot;3&quot;&gt;3&lt;/option&gt;\n&lt;option value=&quot;4&quot;&gt;4&lt;/option&gt;\n&lt;option value=&quot;5&quot;&gt;5&lt;/option&gt;\n&lt;option value=&quot;6&quot;&gt;6&lt;/option&gt;\n&lt;option value=&quot;7&quot;&gt;7&lt;/option&gt;\n&lt;option value=&quot;8&quot;&gt;8&lt;/option&gt;\n&lt;option value=&quot;9&quot;&gt;9&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;10&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;11&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;12&lt;/option&gt;\n&lt;option value=&quot;13&quot;&gt;13&lt;/option&gt;\n&lt;option value=&quot;14&quot;&gt;14&lt;/option&gt;\n&lt;option value=&quot;15&quot;&gt;15&lt;/option&gt;\n&lt;option value=&quot;16&quot; selected=&quot;selected&quot;&gt;16&lt;/option&gt;\n&lt;option value=&quot;17&quot;&gt;17&lt;/option&gt;\n&lt;option value=&quot;18&quot;&gt;18&lt;/option&gt;\n&lt;option value=&quot;19&quot;&gt;19&lt;/option&gt;\n&lt;option value=&quot;20&quot;&gt;20&lt;/option&gt;\n&lt;option value=&quot;21&quot;&gt;21&lt;/option&gt;\n&lt;option value=&quot;22&quot;&gt;22&lt;/option&gt;\n&lt;option value=&quot;23&quot;&gt;23&lt;/option&gt;\n&lt;option value=&quot;24&quot;&gt;24&lt;/option&gt;\n&lt;option value=&quot;25&quot;&gt;25&lt;/option&gt;\n&lt;option value=&quot;26&quot;&gt;26&lt;/option&gt;\n&lt;option value=&quot;27&quot;&gt;27&lt;/option&gt;\n&lt;option value=&quot;28&quot;&gt;28&lt;/option&gt;\n&lt;option value=&quot;29&quot;&gt;29&lt;/option&gt;\n&lt;option value=&quot;30&quot;&gt;30&lt;/option&gt;\n&lt;option value=&quot;31&quot;&gt;31&lt;/option&gt;\n)
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    expected &lt;&lt; %(&lt;select id=&quot;date_first_hour&quot; name=&quot;date[first][hour]&quot;&gt;\n)
+    expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Choose hour&lt;/option&gt;\n&lt;option value=&quot;00&quot;&gt;00&lt;/option&gt;\n&lt;option value=&quot;01&quot;&gt;01&lt;/option&gt;\n&lt;option value=&quot;02&quot;&gt;02&lt;/option&gt;\n&lt;option value=&quot;03&quot;&gt;03&lt;/option&gt;\n&lt;option value=&quot;04&quot;&gt;04&lt;/option&gt;\n&lt;option value=&quot;05&quot;&gt;05&lt;/option&gt;\n&lt;option value=&quot;06&quot;&gt;06&lt;/option&gt;\n&lt;option value=&quot;07&quot;&gt;07&lt;/option&gt;\n&lt;option value=&quot;08&quot; selected=&quot;selected&quot;&gt;08&lt;/option&gt;\n&lt;option value=&quot;09&quot;&gt;09&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;10&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;11&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;12&lt;/option&gt;\n&lt;option value=&quot;13&quot;&gt;13&lt;/option&gt;\n&lt;option value=&quot;14&quot;&gt;14&lt;/option&gt;\n&lt;option value=&quot;15&quot;&gt;15&lt;/option&gt;\n&lt;option value=&quot;16&quot;&gt;16&lt;/option&gt;\n&lt;option value=&quot;17&quot;&gt;17&lt;/option&gt;\n&lt;option value=&quot;18&quot;&gt;18&lt;/option&gt;\n&lt;option value=&quot;19&quot;&gt;19&lt;/option&gt;\n&lt;option value=&quot;20&quot;&gt;20&lt;/option&gt;\n&lt;option value=&quot;21&quot;&gt;21&lt;/option&gt;\n&lt;option value=&quot;22&quot;&gt;22&lt;/option&gt;\n&lt;option value=&quot;23&quot;&gt;23&lt;/option&gt;\n)
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    expected &lt;&lt; %(&lt;select id=&quot;date_first_minute&quot; name=&quot;date[first][minute]&quot;&gt;\n)
+    expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Choose minute&lt;/option&gt;\n&lt;option value=&quot;00&quot;&gt;00&lt;/option&gt;\n&lt;option value=&quot;01&quot;&gt;01&lt;/option&gt;\n&lt;option value=&quot;02&quot;&gt;02&lt;/option&gt;\n&lt;option value=&quot;03&quot;&gt;03&lt;/option&gt;\n&lt;option value=&quot;04&quot; selected=&quot;selected&quot;&gt;04&lt;/option&gt;\n&lt;option value=&quot;05&quot;&gt;05&lt;/option&gt;\n&lt;option value=&quot;06&quot;&gt;06&lt;/option&gt;\n&lt;option value=&quot;07&quot;&gt;07&lt;/option&gt;\n&lt;option value=&quot;08&quot;&gt;08&lt;/option&gt;\n&lt;option value=&quot;09&quot;&gt;09&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;10&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;11&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;12&lt;/option&gt;\n&lt;option value=&quot;13&quot;&gt;13&lt;/option&gt;\n&lt;option value=&quot;14&quot;&gt;14&lt;/option&gt;\n&lt;option value=&quot;15&quot;&gt;15&lt;/option&gt;\n&lt;option value=&quot;16&quot;&gt;16&lt;/option&gt;\n&lt;option value=&quot;17&quot;&gt;17&lt;/option&gt;\n&lt;option value=&quot;18&quot;&gt;18&lt;/option&gt;\n&lt;option value=&quot;19&quot;&gt;19&lt;/option&gt;\n&lt;option value=&quot;20&quot;&gt;20&lt;/option&gt;\n&lt;option value=&quot;21&quot;&gt;21&lt;/option&gt;\n&lt;option value=&quot;22&quot;&gt;22&lt;/option&gt;\n&lt;option value=&quot;23&quot;&gt;23&lt;/option&gt;\n&lt;option value=&quot;24&quot;&gt;24&lt;/option&gt;\n&lt;option value=&quot;25&quot;&gt;25&lt;/option&gt;\n&lt;option value=&quot;26&quot;&gt;26&lt;/option&gt;\n&lt;option value=&quot;27&quot;&gt;27&lt;/option&gt;\n&lt;option value=&quot;28&quot;&gt;28&lt;/option&gt;\n&lt;option value=&quot;29&quot;&gt;29&lt;/option&gt;\n&lt;option value=&quot;30&quot;&gt;30&lt;/option&gt;\n&lt;option value=&quot;31&quot;&gt;31&lt;/option&gt;\n&lt;option value=&quot;32&quot;&gt;32&lt;/option&gt;\n&lt;option value=&quot;33&quot;&gt;33&lt;/option&gt;\n&lt;option value=&quot;34&quot;&gt;34&lt;/option&gt;\n&lt;option value=&quot;35&quot;&gt;35&lt;/option&gt;\n&lt;option value=&quot;36&quot;&gt;36&lt;/option&gt;\n&lt;option value=&quot;37&quot;&gt;37&lt;/option&gt;\n&lt;option value=&quot;38&quot;&gt;38&lt;/option&gt;\n&lt;option value=&quot;39&quot;&gt;39&lt;/option&gt;\n&lt;option value=&quot;40&quot;&gt;40&lt;/option&gt;\n&lt;option value=&quot;41&quot;&gt;41&lt;/option&gt;\n&lt;option value=&quot;42&quot;&gt;42&lt;/option&gt;\n&lt;option value=&quot;43&quot;&gt;43&lt;/option&gt;\n&lt;option value=&quot;44&quot;&gt;44&lt;/option&gt;\n&lt;option value=&quot;45&quot;&gt;45&lt;/option&gt;\n&lt;option value=&quot;46&quot;&gt;46&lt;/option&gt;\n&lt;option value=&quot;47&quot;&gt;47&lt;/option&gt;\n&lt;option value=&quot;48&quot;&gt;48&lt;/option&gt;\n&lt;option value=&quot;49&quot;&gt;49&lt;/option&gt;\n&lt;option value=&quot;50&quot;&gt;50&lt;/option&gt;\n&lt;option value=&quot;51&quot;&gt;51&lt;/option&gt;\n&lt;option value=&quot;52&quot;&gt;52&lt;/option&gt;\n&lt;option value=&quot;53&quot;&gt;53&lt;/option&gt;\n&lt;option value=&quot;54&quot;&gt;54&lt;/option&gt;\n&lt;option value=&quot;55&quot;&gt;55&lt;/option&gt;\n&lt;option value=&quot;56&quot;&gt;56&lt;/option&gt;\n&lt;option value=&quot;57&quot;&gt;57&lt;/option&gt;\n&lt;option value=&quot;58&quot;&gt;58&lt;/option&gt;\n&lt;option value=&quot;59&quot;&gt;59&lt;/option&gt;\n)
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    assert_dom_equal expected, select_datetime(Time.mktime(2003, 8, 16, 8, 4, 18), :start_year =&gt; 2003, :end_year =&gt; 2005, :prefix =&gt; &quot;date[first]&quot;, :prompt=&gt;{:day=&gt;'Choose day', :month=&gt;'Choose month', :year=&gt;'Choose year', :hour=&gt;'Choose hour', :minute=&gt;'Choose minute'})
+  end
 
   def test_select_time
     expected = %(&lt;select id=&quot;date_hour&quot; name=&quot;date[hour]&quot;&gt;\n)
@@ -934,6 +1079,39 @@ class DateHelperTest &lt; ActionView::TestCase
     assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), {:include_seconds =&gt; false}, :class =&gt; 'selector')
   end
   
+  def test_select_time_with_default_prompt
+    expected = %(&lt;select id=&quot;date_hour&quot; name=&quot;date[hour]&quot;&gt;\n)
+    expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Hour&lt;/option&gt;\n&lt;option value=&quot;00&quot;&gt;00&lt;/option&gt;\n&lt;option value=&quot;01&quot;&gt;01&lt;/option&gt;\n&lt;option value=&quot;02&quot;&gt;02&lt;/option&gt;\n&lt;option value=&quot;03&quot;&gt;03&lt;/option&gt;\n&lt;option value=&quot;04&quot;&gt;04&lt;/option&gt;\n&lt;option value=&quot;05&quot;&gt;05&lt;/option&gt;\n&lt;option value=&quot;06&quot;&gt;06&lt;/option&gt;\n&lt;option value=&quot;07&quot;&gt;07&lt;/option&gt;\n&lt;option value=&quot;08&quot; selected=&quot;selected&quot;&gt;08&lt;/option&gt;\n&lt;option value=&quot;09&quot;&gt;09&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;10&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;11&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;12&lt;/option&gt;\n&lt;option value=&quot;13&quot;&gt;13&lt;/option&gt;\n&lt;option value=&quot;14&quot;&gt;14&lt;/option&gt;\n&lt;option value=&quot;15&quot;&gt;15&lt;/option&gt;\n&lt;option value=&quot;16&quot;&gt;16&lt;/option&gt;\n&lt;option value=&quot;17&quot;&gt;17&lt;/option&gt;\n&lt;option value=&quot;18&quot;&gt;18&lt;/option&gt;\n&lt;option value=&quot;19&quot;&gt;19&lt;/option&gt;\n&lt;option value=&quot;20&quot;&gt;20&lt;/option&gt;\n&lt;option value=&quot;21&quot;&gt;21&lt;/option&gt;\n&lt;option value=&quot;22&quot;&gt;22&lt;/option&gt;\n&lt;option value=&quot;23&quot;&gt;23&lt;/option&gt;\n)
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    expected &lt;&lt; %(&lt;select id=&quot;date_minute&quot; name=&quot;date[minute]&quot;&gt;\n)
+    expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Minute&lt;/option&gt;\n&lt;option value=&quot;00&quot;&gt;00&lt;/option&gt;\n&lt;option value=&quot;01&quot;&gt;01&lt;/option&gt;\n&lt;option value=&quot;02&quot;&gt;02&lt;/option&gt;\n&lt;option value=&quot;03&quot;&gt;03&lt;/option&gt;\n&lt;option value=&quot;04&quot; selected=&quot;selected&quot;&gt;04&lt;/option&gt;\n&lt;option value=&quot;05&quot;&gt;05&lt;/option&gt;\n&lt;option value=&quot;06&quot;&gt;06&lt;/option&gt;\n&lt;option value=&quot;07&quot;&gt;07&lt;/option&gt;\n&lt;option value=&quot;08&quot;&gt;08&lt;/option&gt;\n&lt;option value=&quot;09&quot;&gt;09&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;10&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;11&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;12&lt;/option&gt;\n&lt;option value=&quot;13&quot;&gt;13&lt;/option&gt;\n&lt;option value=&quot;14&quot;&gt;14&lt;/option&gt;\n&lt;option value=&quot;15&quot;&gt;15&lt;/option&gt;\n&lt;option value=&quot;16&quot;&gt;16&lt;/option&gt;\n&lt;option value=&quot;17&quot;&gt;17&lt;/option&gt;\n&lt;option value=&quot;18&quot;&gt;18&lt;/option&gt;\n&lt;option value=&quot;19&quot;&gt;19&lt;/option&gt;\n&lt;option value=&quot;20&quot;&gt;20&lt;/option&gt;\n&lt;option value=&quot;21&quot;&gt;21&lt;/option&gt;\n&lt;option value=&quot;22&quot;&gt;22&lt;/option&gt;\n&lt;option value=&quot;23&quot;&gt;23&lt;/option&gt;\n&lt;option value=&quot;24&quot;&gt;24&lt;/option&gt;\n&lt;option value=&quot;25&quot;&gt;25&lt;/option&gt;\n&lt;option value=&quot;26&quot;&gt;26&lt;/option&gt;\n&lt;option value=&quot;27&quot;&gt;27&lt;/option&gt;\n&lt;option value=&quot;28&quot;&gt;28&lt;/option&gt;\n&lt;option value=&quot;29&quot;&gt;29&lt;/option&gt;\n&lt;option value=&quot;30&quot;&gt;30&lt;/option&gt;\n&lt;option value=&quot;31&quot;&gt;31&lt;/option&gt;\n&lt;option value=&quot;32&quot;&gt;32&lt;/option&gt;\n&lt;option value=&quot;33&quot;&gt;33&lt;/option&gt;\n&lt;option value=&quot;34&quot;&gt;34&lt;/option&gt;\n&lt;option value=&quot;35&quot;&gt;35&lt;/option&gt;\n&lt;option value=&quot;36&quot;&gt;36&lt;/option&gt;\n&lt;option value=&quot;37&quot;&gt;37&lt;/option&gt;\n&lt;option value=&quot;38&quot;&gt;38&lt;/option&gt;\n&lt;option value=&quot;39&quot;&gt;39&lt;/option&gt;\n&lt;option value=&quot;40&quot;&gt;40&lt;/option&gt;\n&lt;option value=&quot;41&quot;&gt;41&lt;/option&gt;\n&lt;option value=&quot;42&quot;&gt;42&lt;/option&gt;\n&lt;option value=&quot;43&quot;&gt;43&lt;/option&gt;\n&lt;option value=&quot;44&quot;&gt;44&lt;/option&gt;\n&lt;option value=&quot;45&quot;&gt;45&lt;/option&gt;\n&lt;option value=&quot;46&quot;&gt;46&lt;/option&gt;\n&lt;option value=&quot;47&quot;&gt;47&lt;/option&gt;\n&lt;option value=&quot;48&quot;&gt;48&lt;/option&gt;\n&lt;option value=&quot;49&quot;&gt;49&lt;/option&gt;\n&lt;option value=&quot;50&quot;&gt;50&lt;/option&gt;\n&lt;option value=&quot;51&quot;&gt;51&lt;/option&gt;\n&lt;option value=&quot;52&quot;&gt;52&lt;/option&gt;\n&lt;option value=&quot;53&quot;&gt;53&lt;/option&gt;\n&lt;option value=&quot;54&quot;&gt;54&lt;/option&gt;\n&lt;option value=&quot;55&quot;&gt;55&lt;/option&gt;\n&lt;option value=&quot;56&quot;&gt;56&lt;/option&gt;\n&lt;option value=&quot;57&quot;&gt;57&lt;/option&gt;\n&lt;option value=&quot;58&quot;&gt;58&lt;/option&gt;\n&lt;option value=&quot;59&quot;&gt;59&lt;/option&gt;\n)
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    expected &lt;&lt; %(&lt;select id=&quot;date_second&quot; name=&quot;date[second]&quot;&gt;\n)
+    expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Seconds&lt;/option&gt;\n&lt;option value=&quot;00&quot;&gt;00&lt;/option&gt;\n&lt;option value=&quot;01&quot;&gt;01&lt;/option&gt;\n&lt;option value=&quot;02&quot;&gt;02&lt;/option&gt;\n&lt;option value=&quot;03&quot;&gt;03&lt;/option&gt;\n&lt;option value=&quot;04&quot;&gt;04&lt;/option&gt;\n&lt;option value=&quot;05&quot;&gt;05&lt;/option&gt;\n&lt;option value=&quot;06&quot;&gt;06&lt;/option&gt;\n&lt;option value=&quot;07&quot;&gt;07&lt;/option&gt;\n&lt;option value=&quot;08&quot;&gt;08&lt;/option&gt;\n&lt;option value=&quot;09&quot;&gt;09&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;10&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;11&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;12&lt;/option&gt;\n&lt;option value=&quot;13&quot;&gt;13&lt;/option&gt;\n&lt;option value=&quot;14&quot;&gt;14&lt;/option&gt;\n&lt;option value=&quot;15&quot;&gt;15&lt;/option&gt;\n&lt;option value=&quot;16&quot;&gt;16&lt;/option&gt;\n&lt;option value=&quot;17&quot;&gt;17&lt;/option&gt;\n&lt;option value=&quot;18&quot; selected=&quot;selected&quot;&gt;18&lt;/option&gt;\n&lt;option value=&quot;19&quot;&gt;19&lt;/option&gt;\n&lt;option value=&quot;20&quot;&gt;20&lt;/option&gt;\n&lt;option value=&quot;21&quot;&gt;21&lt;/option&gt;\n&lt;option value=&quot;22&quot;&gt;22&lt;/option&gt;\n&lt;option value=&quot;23&quot;&gt;23&lt;/option&gt;\n&lt;option value=&quot;24&quot;&gt;24&lt;/option&gt;\n&lt;option value=&quot;25&quot;&gt;25&lt;/option&gt;\n&lt;option value=&quot;26&quot;&gt;26&lt;/option&gt;\n&lt;option value=&quot;27&quot;&gt;27&lt;/option&gt;\n&lt;option value=&quot;28&quot;&gt;28&lt;/option&gt;\n&lt;option value=&quot;29&quot;&gt;29&lt;/option&gt;\n&lt;option value=&quot;30&quot;&gt;30&lt;/option&gt;\n&lt;option value=&quot;31&quot;&gt;31&lt;/option&gt;\n&lt;option value=&quot;32&quot;&gt;32&lt;/option&gt;\n&lt;option value=&quot;33&quot;&gt;33&lt;/option&gt;\n&lt;option value=&quot;34&quot;&gt;34&lt;/option&gt;\n&lt;option value=&quot;35&quot;&gt;35&lt;/option&gt;\n&lt;option value=&quot;36&quot;&gt;36&lt;/option&gt;\n&lt;option value=&quot;37&quot;&gt;37&lt;/option&gt;\n&lt;option value=&quot;38&quot;&gt;38&lt;/option&gt;\n&lt;option value=&quot;39&quot;&gt;39&lt;/option&gt;\n&lt;option value=&quot;40&quot;&gt;40&lt;/option&gt;\n&lt;option value=&quot;41&quot;&gt;41&lt;/option&gt;\n&lt;option value=&quot;42&quot;&gt;42&lt;/option&gt;\n&lt;option value=&quot;43&quot;&gt;43&lt;/option&gt;\n&lt;option value=&quot;44&quot;&gt;44&lt;/option&gt;\n&lt;option value=&quot;45&quot;&gt;45&lt;/option&gt;\n&lt;option value=&quot;46&quot;&gt;46&lt;/option&gt;\n&lt;option value=&quot;47&quot;&gt;47&lt;/option&gt;\n&lt;option value=&quot;48&quot;&gt;48&lt;/option&gt;\n&lt;option value=&quot;49&quot;&gt;49&lt;/option&gt;\n&lt;option value=&quot;50&quot;&gt;50&lt;/option&gt;\n&lt;option value=&quot;51&quot;&gt;51&lt;/option&gt;\n&lt;option value=&quot;52&quot;&gt;52&lt;/option&gt;\n&lt;option value=&quot;53&quot;&gt;53&lt;/option&gt;\n&lt;option value=&quot;54&quot;&gt;54&lt;/option&gt;\n&lt;option value=&quot;55&quot;&gt;55&lt;/option&gt;\n&lt;option value=&quot;56&quot;&gt;56&lt;/option&gt;\n&lt;option value=&quot;57&quot;&gt;57&lt;/option&gt;\n&lt;option value=&quot;58&quot;&gt;58&lt;/option&gt;\n&lt;option value=&quot;59&quot;&gt;59&lt;/option&gt;\n)
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), :include_seconds =&gt; true, :prompt=&gt;true)
+  end
+  
+  def test_select_time_with_custom_prompt
+
+    expected = %(&lt;select id=&quot;date_hour&quot; name=&quot;date[hour]&quot;&gt;\n)
+    expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Choose hour&lt;/option&gt;\n&lt;option value=&quot;00&quot;&gt;00&lt;/option&gt;\n&lt;option value=&quot;01&quot;&gt;01&lt;/option&gt;\n&lt;option value=&quot;02&quot;&gt;02&lt;/option&gt;\n&lt;option value=&quot;03&quot;&gt;03&lt;/option&gt;\n&lt;option value=&quot;04&quot;&gt;04&lt;/option&gt;\n&lt;option value=&quot;05&quot;&gt;05&lt;/option&gt;\n&lt;option value=&quot;06&quot;&gt;06&lt;/option&gt;\n&lt;option value=&quot;07&quot;&gt;07&lt;/option&gt;\n&lt;option value=&quot;08&quot; selected=&quot;selected&quot;&gt;08&lt;/option&gt;\n&lt;option value=&quot;09&quot;&gt;09&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;10&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;11&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;12&lt;/option&gt;\n&lt;option value=&quot;13&quot;&gt;13&lt;/option&gt;\n&lt;option value=&quot;14&quot;&gt;14&lt;/option&gt;\n&lt;option value=&quot;15&quot;&gt;15&lt;/option&gt;\n&lt;option value=&quot;16&quot;&gt;16&lt;/option&gt;\n&lt;option value=&quot;17&quot;&gt;17&lt;/option&gt;\n&lt;option value=&quot;18&quot;&gt;18&lt;/option&gt;\n&lt;option value=&quot;19&quot;&gt;19&lt;/option&gt;\n&lt;option value=&quot;20&quot;&gt;20&lt;/option&gt;\n&lt;option value=&quot;21&quot;&gt;21&lt;/option&gt;\n&lt;option value=&quot;22&quot;&gt;22&lt;/option&gt;\n&lt;option value=&quot;23&quot;&gt;23&lt;/option&gt;\n)
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    expected &lt;&lt; %(&lt;select id=&quot;date_minute&quot; name=&quot;date[minute]&quot;&gt;\n)
+    expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Choose minute&lt;/option&gt;\n&lt;option value=&quot;00&quot;&gt;00&lt;/option&gt;\n&lt;option value=&quot;01&quot;&gt;01&lt;/option&gt;\n&lt;option value=&quot;02&quot;&gt;02&lt;/option&gt;\n&lt;option value=&quot;03&quot;&gt;03&lt;/option&gt;\n&lt;option value=&quot;04&quot; selected=&quot;selected&quot;&gt;04&lt;/option&gt;\n&lt;option value=&quot;05&quot;&gt;05&lt;/option&gt;\n&lt;option value=&quot;06&quot;&gt;06&lt;/option&gt;\n&lt;option value=&quot;07&quot;&gt;07&lt;/option&gt;\n&lt;option value=&quot;08&quot;&gt;08&lt;/option&gt;\n&lt;option value=&quot;09&quot;&gt;09&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;10&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;11&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;12&lt;/option&gt;\n&lt;option value=&quot;13&quot;&gt;13&lt;/option&gt;\n&lt;option value=&quot;14&quot;&gt;14&lt;/option&gt;\n&lt;option value=&quot;15&quot;&gt;15&lt;/option&gt;\n&lt;option value=&quot;16&quot;&gt;16&lt;/option&gt;\n&lt;option value=&quot;17&quot;&gt;17&lt;/option&gt;\n&lt;option value=&quot;18&quot;&gt;18&lt;/option&gt;\n&lt;option value=&quot;19&quot;&gt;19&lt;/option&gt;\n&lt;option value=&quot;20&quot;&gt;20&lt;/option&gt;\n&lt;option value=&quot;21&quot;&gt;21&lt;/option&gt;\n&lt;option value=&quot;22&quot;&gt;22&lt;/option&gt;\n&lt;option value=&quot;23&quot;&gt;23&lt;/option&gt;\n&lt;option value=&quot;24&quot;&gt;24&lt;/option&gt;\n&lt;option value=&quot;25&quot;&gt;25&lt;/option&gt;\n&lt;option value=&quot;26&quot;&gt;26&lt;/option&gt;\n&lt;option value=&quot;27&quot;&gt;27&lt;/option&gt;\n&lt;option value=&quot;28&quot;&gt;28&lt;/option&gt;\n&lt;option value=&quot;29&quot;&gt;29&lt;/option&gt;\n&lt;option value=&quot;30&quot;&gt;30&lt;/option&gt;\n&lt;option value=&quot;31&quot;&gt;31&lt;/option&gt;\n&lt;option value=&quot;32&quot;&gt;32&lt;/option&gt;\n&lt;option value=&quot;33&quot;&gt;33&lt;/option&gt;\n&lt;option value=&quot;34&quot;&gt;34&lt;/option&gt;\n&lt;option value=&quot;35&quot;&gt;35&lt;/option&gt;\n&lt;option value=&quot;36&quot;&gt;36&lt;/option&gt;\n&lt;option value=&quot;37&quot;&gt;37&lt;/option&gt;\n&lt;option value=&quot;38&quot;&gt;38&lt;/option&gt;\n&lt;option value=&quot;39&quot;&gt;39&lt;/option&gt;\n&lt;option value=&quot;40&quot;&gt;40&lt;/option&gt;\n&lt;option value=&quot;41&quot;&gt;41&lt;/option&gt;\n&lt;option value=&quot;42&quot;&gt;42&lt;/option&gt;\n&lt;option value=&quot;43&quot;&gt;43&lt;/option&gt;\n&lt;option value=&quot;44&quot;&gt;44&lt;/option&gt;\n&lt;option value=&quot;45&quot;&gt;45&lt;/option&gt;\n&lt;option value=&quot;46&quot;&gt;46&lt;/option&gt;\n&lt;option value=&quot;47&quot;&gt;47&lt;/option&gt;\n&lt;option value=&quot;48&quot;&gt;48&lt;/option&gt;\n&lt;option value=&quot;49&quot;&gt;49&lt;/option&gt;\n&lt;option value=&quot;50&quot;&gt;50&lt;/option&gt;\n&lt;option value=&quot;51&quot;&gt;51&lt;/option&gt;\n&lt;option value=&quot;52&quot;&gt;52&lt;/option&gt;\n&lt;option value=&quot;53&quot;&gt;53&lt;/option&gt;\n&lt;option value=&quot;54&quot;&gt;54&lt;/option&gt;\n&lt;option value=&quot;55&quot;&gt;55&lt;/option&gt;\n&lt;option value=&quot;56&quot;&gt;56&lt;/option&gt;\n&lt;option value=&quot;57&quot;&gt;57&lt;/option&gt;\n&lt;option value=&quot;58&quot;&gt;58&lt;/option&gt;\n&lt;option value=&quot;59&quot;&gt;59&lt;/option&gt;\n)
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    expected &lt;&lt; %(&lt;select id=&quot;date_second&quot; name=&quot;date[second]&quot;&gt;\n)
+    expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Choose seconds&lt;/option&gt;\n&lt;option value=&quot;00&quot;&gt;00&lt;/option&gt;\n&lt;option value=&quot;01&quot;&gt;01&lt;/option&gt;\n&lt;option value=&quot;02&quot;&gt;02&lt;/option&gt;\n&lt;option value=&quot;03&quot;&gt;03&lt;/option&gt;\n&lt;option value=&quot;04&quot;&gt;04&lt;/option&gt;\n&lt;option value=&quot;05&quot;&gt;05&lt;/option&gt;\n&lt;option value=&quot;06&quot;&gt;06&lt;/option&gt;\n&lt;option value=&quot;07&quot;&gt;07&lt;/option&gt;\n&lt;option value=&quot;08&quot;&gt;08&lt;/option&gt;\n&lt;option value=&quot;09&quot;&gt;09&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;10&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;11&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;12&lt;/option&gt;\n&lt;option value=&quot;13&quot;&gt;13&lt;/option&gt;\n&lt;option value=&quot;14&quot;&gt;14&lt;/option&gt;\n&lt;option value=&quot;15&quot;&gt;15&lt;/option&gt;\n&lt;option value=&quot;16&quot;&gt;16&lt;/option&gt;\n&lt;option value=&quot;17&quot;&gt;17&lt;/option&gt;\n&lt;option value=&quot;18&quot; selected=&quot;selected&quot;&gt;18&lt;/option&gt;\n&lt;option value=&quot;19&quot;&gt;19&lt;/option&gt;\n&lt;option value=&quot;20&quot;&gt;20&lt;/option&gt;\n&lt;option value=&quot;21&quot;&gt;21&lt;/option&gt;\n&lt;option value=&quot;22&quot;&gt;22&lt;/option&gt;\n&lt;option value=&quot;23&quot;&gt;23&lt;/option&gt;\n&lt;option value=&quot;24&quot;&gt;24&lt;/option&gt;\n&lt;option value=&quot;25&quot;&gt;25&lt;/option&gt;\n&lt;option value=&quot;26&quot;&gt;26&lt;/option&gt;\n&lt;option value=&quot;27&quot;&gt;27&lt;/option&gt;\n&lt;option value=&quot;28&quot;&gt;28&lt;/option&gt;\n&lt;option value=&quot;29&quot;&gt;29&lt;/option&gt;\n&lt;option value=&quot;30&quot;&gt;30&lt;/option&gt;\n&lt;option value=&quot;31&quot;&gt;31&lt;/option&gt;\n&lt;option value=&quot;32&quot;&gt;32&lt;/option&gt;\n&lt;option value=&quot;33&quot;&gt;33&lt;/option&gt;\n&lt;option value=&quot;34&quot;&gt;34&lt;/option&gt;\n&lt;option value=&quot;35&quot;&gt;35&lt;/option&gt;\n&lt;option value=&quot;36&quot;&gt;36&lt;/option&gt;\n&lt;option value=&quot;37&quot;&gt;37&lt;/option&gt;\n&lt;option value=&quot;38&quot;&gt;38&lt;/option&gt;\n&lt;option value=&quot;39&quot;&gt;39&lt;/option&gt;\n&lt;option value=&quot;40&quot;&gt;40&lt;/option&gt;\n&lt;option value=&quot;41&quot;&gt;41&lt;/option&gt;\n&lt;option value=&quot;42&quot;&gt;42&lt;/option&gt;\n&lt;option value=&quot;43&quot;&gt;43&lt;/option&gt;\n&lt;option value=&quot;44&quot;&gt;44&lt;/option&gt;\n&lt;option value=&quot;45&quot;&gt;45&lt;/option&gt;\n&lt;option value=&quot;46&quot;&gt;46&lt;/option&gt;\n&lt;option value=&quot;47&quot;&gt;47&lt;/option&gt;\n&lt;option value=&quot;48&quot;&gt;48&lt;/option&gt;\n&lt;option value=&quot;49&quot;&gt;49&lt;/option&gt;\n&lt;option value=&quot;50&quot;&gt;50&lt;/option&gt;\n&lt;option value=&quot;51&quot;&gt;51&lt;/option&gt;\n&lt;option value=&quot;52&quot;&gt;52&lt;/option&gt;\n&lt;option value=&quot;53&quot;&gt;53&lt;/option&gt;\n&lt;option value=&quot;54&quot;&gt;54&lt;/option&gt;\n&lt;option value=&quot;55&quot;&gt;55&lt;/option&gt;\n&lt;option value=&quot;56&quot;&gt;56&lt;/option&gt;\n&lt;option value=&quot;57&quot;&gt;57&lt;/option&gt;\n&lt;option value=&quot;58&quot;&gt;58&lt;/option&gt;\n&lt;option value=&quot;59&quot;&gt;59&lt;/option&gt;\n)
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+    
+    assert_dom_equal expected, select_time(Time.mktime(2003, 8, 16, 8, 4, 18), :prompt=&gt;true, :include_seconds=&gt;true, :prompt=&gt;{:hour=&gt;'Choose hour', :minute=&gt;'Choose minute', :second=&gt;'Choose seconds'})
+  end
+  
   uses_mocha 'TestDatetimeAndTimeSelectUseTimeCurrentAsDefault' do
     def test_select_datetime_uses_time_current_as_default
       time = stub(:year =&gt; 2004, :month =&gt; 6, :day =&gt; 15, :hour =&gt; 16, :min =&gt; 35, :sec =&gt; 0)
@@ -1178,6 +1356,46 @@ class DateHelperTest &lt; ActionView::TestCase
 
     assert_dom_equal expected, output_buffer
   end
+  
+  def test_date_select_with_default_prompt
+    @post = Post.new
+    @post.written_on = Date.new(2004, 6, 15)
+
+    expected = %{&lt;select id=&quot;post_written_on_1i&quot; name=&quot;post[written_on(1i)]&quot;&gt;\n}
+    expected &lt;&lt; %{&lt;option value=&quot;&quot;&gt;Year&lt;/option&gt;\n&lt;option value=&quot;1999&quot;&gt;1999&lt;/option&gt;\n&lt;option value=&quot;2000&quot;&gt;2000&lt;/option&gt;\n&lt;option value=&quot;2001&quot;&gt;2001&lt;/option&gt;\n&lt;option value=&quot;2002&quot;&gt;2002&lt;/option&gt;\n&lt;option value=&quot;2003&quot;&gt;2003&lt;/option&gt;\n&lt;option value=&quot;2004&quot; selected=&quot;selected&quot;&gt;2004&lt;/option&gt;\n&lt;option value=&quot;2005&quot;&gt;2005&lt;/option&gt;\n&lt;option value=&quot;2006&quot;&gt;2006&lt;/option&gt;\n&lt;option value=&quot;2007&quot;&gt;2007&lt;/option&gt;\n&lt;option value=&quot;2008&quot;&gt;2008&lt;/option&gt;\n&lt;option value=&quot;2009&quot;&gt;2009&lt;/option&gt;\n}
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    expected &lt;&lt; %{&lt;select id=&quot;post_written_on_2i&quot; name=&quot;post[written_on(2i)]&quot;&gt;\n}
+    expected &lt;&lt; %{&lt;option value=&quot;&quot;&gt;Month&lt;/option&gt;\n&lt;option value=&quot;1&quot;&gt;January&lt;/option&gt;\n&lt;option value=&quot;2&quot;&gt;February&lt;/option&gt;\n&lt;option value=&quot;3&quot;&gt;March&lt;/option&gt;\n&lt;option value=&quot;4&quot;&gt;April&lt;/option&gt;\n&lt;option value=&quot;5&quot;&gt;May&lt;/option&gt;\n&lt;option value=&quot;6&quot; selected=&quot;selected&quot;&gt;June&lt;/option&gt;\n&lt;option value=&quot;7&quot;&gt;July&lt;/option&gt;\n&lt;option value=&quot;8&quot;&gt;August&lt;/option&gt;\n&lt;option value=&quot;9&quot;&gt;September&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;October&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;November&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;December&lt;/option&gt;\n}
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    expected &lt;&lt; %{&lt;select id=&quot;post_written_on_3i&quot; name=&quot;post[written_on(3i)]&quot;&gt;\n}
+    expected &lt;&lt; %{&lt;option value=&quot;&quot;&gt;Day&lt;/option&gt;\n&lt;option value=&quot;1&quot;&gt;1&lt;/option&gt;\n&lt;option value=&quot;2&quot;&gt;2&lt;/option&gt;\n&lt;option value=&quot;3&quot;&gt;3&lt;/option&gt;\n&lt;option value=&quot;4&quot;&gt;4&lt;/option&gt;\n&lt;option value=&quot;5&quot;&gt;5&lt;/option&gt;\n&lt;option value=&quot;6&quot;&gt;6&lt;/option&gt;\n&lt;option value=&quot;7&quot;&gt;7&lt;/option&gt;\n&lt;option value=&quot;8&quot;&gt;8&lt;/option&gt;\n&lt;option value=&quot;9&quot;&gt;9&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;10&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;11&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;12&lt;/option&gt;\n&lt;option value=&quot;13&quot;&gt;13&lt;/option&gt;\n&lt;option value=&quot;14&quot;&gt;14&lt;/option&gt;\n&lt;option value=&quot;15&quot; selected=&quot;selected&quot;&gt;15&lt;/option&gt;\n&lt;option value=&quot;16&quot;&gt;16&lt;/option&gt;\n&lt;option value=&quot;17&quot;&gt;17&lt;/option&gt;\n&lt;option value=&quot;18&quot;&gt;18&lt;/option&gt;\n&lt;option value=&quot;19&quot;&gt;19&lt;/option&gt;\n&lt;option value=&quot;20&quot;&gt;20&lt;/option&gt;\n&lt;option value=&quot;21&quot;&gt;21&lt;/option&gt;\n&lt;option value=&quot;22&quot;&gt;22&lt;/option&gt;\n&lt;option value=&quot;23&quot;&gt;23&lt;/option&gt;\n&lt;option value=&quot;24&quot;&gt;24&lt;/option&gt;\n&lt;option value=&quot;25&quot;&gt;25&lt;/option&gt;\n&lt;option value=&quot;26&quot;&gt;26&lt;/option&gt;\n&lt;option value=&quot;27&quot;&gt;27&lt;/option&gt;\n&lt;option value=&quot;28&quot;&gt;28&lt;/option&gt;\n&lt;option value=&quot;29&quot;&gt;29&lt;/option&gt;\n&lt;option value=&quot;30&quot;&gt;30&lt;/option&gt;\n&lt;option value=&quot;31&quot;&gt;31&lt;/option&gt;\n}
+
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    assert_dom_equal expected, date_select(&quot;post&quot;, &quot;written_on&quot;, :prompt=&gt;true)
+  end
+
+  def test_date_select_with_custom_prompt
+    @post = Post.new
+    @post.written_on = Date.new(2004, 6, 15)
+
+    expected = %{&lt;select id=&quot;post_written_on_1i&quot; name=&quot;post[written_on(1i)]&quot;&gt;\n}
+    expected &lt;&lt; %{&lt;option value=&quot;&quot;&gt;Choose year&lt;/option&gt;\n&lt;option value=&quot;1999&quot;&gt;1999&lt;/option&gt;\n&lt;option value=&quot;2000&quot;&gt;2000&lt;/option&gt;\n&lt;option value=&quot;2001&quot;&gt;2001&lt;/option&gt;\n&lt;option value=&quot;2002&quot;&gt;2002&lt;/option&gt;\n&lt;option value=&quot;2003&quot;&gt;2003&lt;/option&gt;\n&lt;option value=&quot;2004&quot; selected=&quot;selected&quot;&gt;2004&lt;/option&gt;\n&lt;option value=&quot;2005&quot;&gt;2005&lt;/option&gt;\n&lt;option value=&quot;2006&quot;&gt;2006&lt;/option&gt;\n&lt;option value=&quot;2007&quot;&gt;2007&lt;/option&gt;\n&lt;option value=&quot;2008&quot;&gt;2008&lt;/option&gt;\n&lt;option value=&quot;2009&quot;&gt;2009&lt;/option&gt;\n}
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    expected &lt;&lt; %{&lt;select id=&quot;post_written_on_2i&quot; name=&quot;post[written_on(2i)]&quot;&gt;\n}
+    expected &lt;&lt; %{&lt;option value=&quot;&quot;&gt;Choose month&lt;/option&gt;\n&lt;option value=&quot;1&quot;&gt;January&lt;/option&gt;\n&lt;option value=&quot;2&quot;&gt;February&lt;/option&gt;\n&lt;option value=&quot;3&quot;&gt;March&lt;/option&gt;\n&lt;option value=&quot;4&quot;&gt;April&lt;/option&gt;\n&lt;option value=&quot;5&quot;&gt;May&lt;/option&gt;\n&lt;option value=&quot;6&quot; selected=&quot;selected&quot;&gt;June&lt;/option&gt;\n&lt;option value=&quot;7&quot;&gt;July&lt;/option&gt;\n&lt;option value=&quot;8&quot;&gt;August&lt;/option&gt;\n&lt;option value=&quot;9&quot;&gt;September&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;October&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;November&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;December&lt;/option&gt;\n}
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    expected &lt;&lt; %{&lt;select id=&quot;post_written_on_3i&quot; name=&quot;post[written_on(3i)]&quot;&gt;\n}
+    expected &lt;&lt; %{&lt;option value=&quot;&quot;&gt;Choose day&lt;/option&gt;\n&lt;option value=&quot;1&quot;&gt;1&lt;/option&gt;\n&lt;option value=&quot;2&quot;&gt;2&lt;/option&gt;\n&lt;option value=&quot;3&quot;&gt;3&lt;/option&gt;\n&lt;option value=&quot;4&quot;&gt;4&lt;/option&gt;\n&lt;option value=&quot;5&quot;&gt;5&lt;/option&gt;\n&lt;option value=&quot;6&quot;&gt;6&lt;/option&gt;\n&lt;option value=&quot;7&quot;&gt;7&lt;/option&gt;\n&lt;option value=&quot;8&quot;&gt;8&lt;/option&gt;\n&lt;option value=&quot;9&quot;&gt;9&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;10&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;11&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;12&lt;/option&gt;\n&lt;option value=&quot;13&quot;&gt;13&lt;/option&gt;\n&lt;option value=&quot;14&quot;&gt;14&lt;/option&gt;\n&lt;option value=&quot;15&quot; selected=&quot;selected&quot;&gt;15&lt;/option&gt;\n&lt;option value=&quot;16&quot;&gt;16&lt;/option&gt;\n&lt;option value=&quot;17&quot;&gt;17&lt;/option&gt;\n&lt;option value=&quot;18&quot;&gt;18&lt;/option&gt;\n&lt;option value=&quot;19&quot;&gt;19&lt;/option&gt;\n&lt;option value=&quot;20&quot;&gt;20&lt;/option&gt;\n&lt;option value=&quot;21&quot;&gt;21&lt;/option&gt;\n&lt;option value=&quot;22&quot;&gt;22&lt;/option&gt;\n&lt;option value=&quot;23&quot;&gt;23&lt;/option&gt;\n&lt;option value=&quot;24&quot;&gt;24&lt;/option&gt;\n&lt;option value=&quot;25&quot;&gt;25&lt;/option&gt;\n&lt;option value=&quot;26&quot;&gt;26&lt;/option&gt;\n&lt;option value=&quot;27&quot;&gt;27&lt;/option&gt;\n&lt;option value=&quot;28&quot;&gt;28&lt;/option&gt;\n&lt;option value=&quot;29&quot;&gt;29&lt;/option&gt;\n&lt;option value=&quot;30&quot;&gt;30&lt;/option&gt;\n&lt;option value=&quot;31&quot;&gt;31&lt;/option&gt;\n}
+
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    assert_dom_equal expected, date_select(&quot;post&quot;, &quot;written_on&quot;, :prompt=&gt;{:year=&gt;'Choose year', :month=&gt;'Choose month', :day=&gt;'Choose day'})
+  end
 
   def test_time_select
     @post = Post.new
@@ -1277,6 +1495,48 @@ class DateHelperTest &lt; ActionView::TestCase
 
     assert_dom_equal expected, output_buffer
   end
+  
+  def test_time_select_with_default_prompt
+    @post = Post.new
+    @post.written_on = Time.local(2004, 6, 15, 15, 16, 35)
+
+    expected = %{&lt;input type=&quot;hidden&quot; id=&quot;post_written_on_1i&quot; name=&quot;post[written_on(1i)]&quot; value=&quot;2004&quot; /&gt;\n}
+    expected &lt;&lt; %{&lt;input type=&quot;hidden&quot; id=&quot;post_written_on_2i&quot; name=&quot;post[written_on(2i)]&quot; value=&quot;6&quot; /&gt;\n}
+    expected &lt;&lt; %{&lt;input type=&quot;hidden&quot; id=&quot;post_written_on_3i&quot; name=&quot;post[written_on(3i)]&quot; value=&quot;15&quot; /&gt;\n}
+
+    expected &lt;&lt; %(&lt;select id=&quot;post_written_on_4i&quot; name=&quot;post[written_on(4i)]&quot;&gt;\n)
+    expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Hour&lt;/option&gt;\n)
+    0.upto(23) { |i| expected &lt;&lt; %(&lt;option value=&quot;#{leading_zero_on_single_digits(i)}&quot;#{' selected=&quot;selected&quot;' if i == 15}&gt;#{leading_zero_on_single_digits(i)}&lt;/option&gt;\n) }
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+    expected &lt;&lt; &quot; : &quot;
+    expected &lt;&lt; %(&lt;select id=&quot;post_written_on_5i&quot; name=&quot;post[written_on(5i)]&quot;&gt;\n)
+        expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Minute&lt;/option&gt;\n)
+    0.upto(59) { |i| expected &lt;&lt; %(&lt;option value=&quot;#{leading_zero_on_single_digits(i)}&quot;#{' selected=&quot;selected&quot;' if i == 16}&gt;#{leading_zero_on_single_digits(i)}&lt;/option&gt;\n) }
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    assert_dom_equal expected, time_select(&quot;post&quot;, &quot;written_on&quot;, :prompt=&gt;true)
+  end
+  
+  def test_time_select_with_custom_prompt
+    @post = Post.new
+    @post.written_on = Time.local(2004, 6, 15, 15, 16, 35)
+
+    expected = %{&lt;input type=&quot;hidden&quot; id=&quot;post_written_on_1i&quot; name=&quot;post[written_on(1i)]&quot; value=&quot;2004&quot; /&gt;\n}
+    expected &lt;&lt; %{&lt;input type=&quot;hidden&quot; id=&quot;post_written_on_2i&quot; name=&quot;post[written_on(2i)]&quot; value=&quot;6&quot; /&gt;\n}
+    expected &lt;&lt; %{&lt;input type=&quot;hidden&quot; id=&quot;post_written_on_3i&quot; name=&quot;post[written_on(3i)]&quot; value=&quot;15&quot; /&gt;\n}
+
+    expected &lt;&lt; %(&lt;select id=&quot;post_written_on_4i&quot; name=&quot;post[written_on(4i)]&quot;&gt;\n)
+    expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Choose hour&lt;/option&gt;\n)
+    0.upto(23) { |i| expected &lt;&lt; %(&lt;option value=&quot;#{leading_zero_on_single_digits(i)}&quot;#{' selected=&quot;selected&quot;' if i == 15}&gt;#{leading_zero_on_single_digits(i)}&lt;/option&gt;\n) }
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+    expected &lt;&lt; &quot; : &quot;
+    expected &lt;&lt; %(&lt;select id=&quot;post_written_on_5i&quot; name=&quot;post[written_on(5i)]&quot;&gt;\n)
+        expected &lt;&lt; %(&lt;option value=&quot;&quot;&gt;Choose minute&lt;/option&gt;\n)
+    0.upto(59) { |i| expected &lt;&lt; %(&lt;option value=&quot;#{leading_zero_on_single_digits(i)}&quot;#{' selected=&quot;selected&quot;' if i == 16}&gt;#{leading_zero_on_single_digits(i)}&lt;/option&gt;\n) }
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    assert_dom_equal expected, time_select(&quot;post&quot;, &quot;written_on&quot;, :prompt=&gt;{:hour=&gt;'Choose hour', :minute=&gt;'Choose minute'})
+  end
 
   def test_datetime_select
     @post = Post.new
@@ -1359,7 +1619,7 @@ class DateHelperTest &lt; ActionView::TestCase
 
     assert_dom_equal expected, output_buffer
   end
-
+  
   def test_date_select_with_zero_value_and_no_start_year
     expected =  %(&lt;select id=&quot;date_first_year&quot; name=&quot;date[first][year]&quot;&gt;\n)
     (Date.today.year-5).upto(Date.today.year+1) { |y| expected &lt;&lt; %(&lt;option value=&quot;#{y}&quot;&gt;#{y}&lt;/option&gt;\n) }
@@ -1765,7 +2025,65 @@ class DateHelperTest &lt; ActionView::TestCase
 
     assert_dom_equal expected, datetime_select(&quot;post&quot;, &quot;updated_at&quot;, {}, :class =&gt; 'selector')
   end
+  
+  def test_datetime_select_with_default_prompt
+    @post = Post.new
+    @post.updated_at = Time.local(2004, 6, 15, 16, 35)
+
+    expected = %{&lt;select id=&quot;post_updated_at_1i&quot; name=&quot;post[updated_at(1i)]&quot;&gt;\n}
+    expected &lt;&lt; %{&lt;option value=&quot;&quot;&gt;Year&lt;/option&gt;\n&lt;option value=&quot;1999&quot;&gt;1999&lt;/option&gt;\n&lt;option value=&quot;2000&quot;&gt;2000&lt;/option&gt;\n&lt;option value=&quot;2001&quot;&gt;2001&lt;/option&gt;\n&lt;option value=&quot;2002&quot;&gt;2002&lt;/option&gt;\n&lt;option value=&quot;2003&quot;&gt;2003&lt;/option&gt;\n&lt;option value=&quot;2004&quot; selected=&quot;selected&quot;&gt;2004&lt;/option&gt;\n&lt;option value=&quot;2005&quot;&gt;2005&lt;/option&gt;\n&lt;option value=&quot;2006&quot;&gt;2006&lt;/option&gt;\n&lt;option value=&quot;2007&quot;&gt;2007&lt;/option&gt;\n&lt;option value=&quot;2008&quot;&gt;2008&lt;/option&gt;\n&lt;option value=&quot;2009&quot;&gt;2009&lt;/option&gt;\n}
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    expected &lt;&lt; %{&lt;select id=&quot;post_updated_at_2i&quot; name=&quot;post[updated_at(2i)]&quot;&gt;\n}
+    expected &lt;&lt; %{&lt;option value=&quot;&quot;&gt;Month&lt;/option&gt;\n&lt;option value=&quot;1&quot;&gt;January&lt;/option&gt;\n&lt;option value=&quot;2&quot;&gt;February&lt;/option&gt;\n&lt;option value=&quot;3&quot;&gt;March&lt;/option&gt;\n&lt;option value=&quot;4&quot;&gt;April&lt;/option&gt;\n&lt;option value=&quot;5&quot;&gt;May&lt;/option&gt;\n&lt;option value=&quot;6&quot; selected=&quot;selected&quot;&gt;June&lt;/option&gt;\n&lt;option value=&quot;7&quot;&gt;July&lt;/option&gt;\n&lt;option value=&quot;8&quot;&gt;August&lt;/option&gt;\n&lt;option value=&quot;9&quot;&gt;September&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;October&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;November&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;December&lt;/option&gt;\n}
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
 
+    expected &lt;&lt; %{&lt;select id=&quot;post_updated_at_3i&quot; name=&quot;post[updated_at(3i)]&quot;&gt;\n}
+    expected &lt;&lt; %{&lt;option value=&quot;&quot;&gt;Day&lt;/option&gt;\n&lt;option value=&quot;1&quot;&gt;1&lt;/option&gt;\n&lt;option value=&quot;2&quot;&gt;2&lt;/option&gt;\n&lt;option value=&quot;3&quot;&gt;3&lt;/option&gt;\n&lt;option value=&quot;4&quot;&gt;4&lt;/option&gt;\n&lt;option value=&quot;5&quot;&gt;5&lt;/option&gt;\n&lt;option value=&quot;6&quot;&gt;6&lt;/option&gt;\n&lt;option value=&quot;7&quot;&gt;7&lt;/option&gt;\n&lt;option value=&quot;8&quot;&gt;8&lt;/option&gt;\n&lt;option value=&quot;9&quot;&gt;9&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;10&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;11&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;12&lt;/option&gt;\n&lt;option value=&quot;13&quot;&gt;13&lt;/option&gt;\n&lt;option value=&quot;14&quot;&gt;14&lt;/option&gt;\n&lt;option value=&quot;15&quot; selected=&quot;selected&quot;&gt;15&lt;/option&gt;\n&lt;option value=&quot;16&quot;&gt;16&lt;/option&gt;\n&lt;option value=&quot;17&quot;&gt;17&lt;/option&gt;\n&lt;option value=&quot;18&quot;&gt;18&lt;/option&gt;\n&lt;option value=&quot;19&quot;&gt;19&lt;/option&gt;\n&lt;option value=&quot;20&quot;&gt;20&lt;/option&gt;\n&lt;option value=&quot;21&quot;&gt;21&lt;/option&gt;\n&lt;option value=&quot;22&quot;&gt;22&lt;/option&gt;\n&lt;option value=&quot;23&quot;&gt;23&lt;/option&gt;\n&lt;option value=&quot;24&quot;&gt;24&lt;/option&gt;\n&lt;option value=&quot;25&quot;&gt;25&lt;/option&gt;\n&lt;option value=&quot;26&quot;&gt;26&lt;/option&gt;\n&lt;option value=&quot;27&quot;&gt;27&lt;/option&gt;\n&lt;option value=&quot;28&quot;&gt;28&lt;/option&gt;\n&lt;option value=&quot;29&quot;&gt;29&lt;/option&gt;\n&lt;option value=&quot;30&quot;&gt;30&lt;/option&gt;\n&lt;option value=&quot;31&quot;&gt;31&lt;/option&gt;\n}
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    expected &lt;&lt; &quot; &amp;mdash; &quot;
+
+    expected &lt;&lt; %{&lt;select id=&quot;post_updated_at_4i&quot; name=&quot;post[updated_at(4i)]&quot;&gt;\n}
+    expected &lt;&lt; %{&lt;option value=&quot;&quot;&gt;Hour&lt;/option&gt;\n&lt;option value=&quot;00&quot;&gt;00&lt;/option&gt;\n&lt;option value=&quot;01&quot;&gt;01&lt;/option&gt;\n&lt;option value=&quot;02&quot;&gt;02&lt;/option&gt;\n&lt;option value=&quot;03&quot;&gt;03&lt;/option&gt;\n&lt;option value=&quot;04&quot;&gt;04&lt;/option&gt;\n&lt;option value=&quot;05&quot;&gt;05&lt;/option&gt;\n&lt;option value=&quot;06&quot;&gt;06&lt;/option&gt;\n&lt;option value=&quot;07&quot;&gt;07&lt;/option&gt;\n&lt;option value=&quot;08&quot;&gt;08&lt;/option&gt;\n&lt;option value=&quot;09&quot;&gt;09&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;10&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;11&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;12&lt;/option&gt;\n&lt;option value=&quot;13&quot;&gt;13&lt;/option&gt;\n&lt;option value=&quot;14&quot;&gt;14&lt;/option&gt;\n&lt;option value=&quot;15&quot;&gt;15&lt;/option&gt;\n&lt;option value=&quot;16&quot; selected=&quot;selected&quot;&gt;16&lt;/option&gt;\n&lt;option value=&quot;17&quot;&gt;17&lt;/option&gt;\n&lt;option value=&quot;18&quot;&gt;18&lt;/option&gt;\n&lt;option value=&quot;19&quot;&gt;19&lt;/option&gt;\n&lt;option value=&quot;20&quot;&gt;20&lt;/option&gt;\n&lt;option value=&quot;21&quot;&gt;21&lt;/option&gt;\n&lt;option value=&quot;22&quot;&gt;22&lt;/option&gt;\n&lt;option value=&quot;23&quot;&gt;23&lt;/option&gt;\n}
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+    expected &lt;&lt; &quot; : &quot;
+    expected &lt;&lt; %{&lt;select id=&quot;post_updated_at_5i&quot; name=&quot;post[updated_at(5i)]&quot;&gt;\n}
+    expected &lt;&lt; %{&lt;option value=&quot;&quot;&gt;Minute&lt;/option&gt;\n&lt;option value=&quot;00&quot;&gt;00&lt;/option&gt;\n&lt;option value=&quot;01&quot;&gt;01&lt;/option&gt;\n&lt;option value=&quot;02&quot;&gt;02&lt;/option&gt;\n&lt;option value=&quot;03&quot;&gt;03&lt;/option&gt;\n&lt;option value=&quot;04&quot;&gt;04&lt;/option&gt;\n&lt;option value=&quot;05&quot;&gt;05&lt;/option&gt;\n&lt;option value=&quot;06&quot;&gt;06&lt;/option&gt;\n&lt;option value=&quot;07&quot;&gt;07&lt;/option&gt;\n&lt;option value=&quot;08&quot;&gt;08&lt;/option&gt;\n&lt;option value=&quot;09&quot;&gt;09&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;10&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;11&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;12&lt;/option&gt;\n&lt;option value=&quot;13&quot;&gt;13&lt;/option&gt;\n&lt;option value=&quot;14&quot;&gt;14&lt;/option&gt;\n&lt;option value=&quot;15&quot;&gt;15&lt;/option&gt;\n&lt;option value=&quot;16&quot;&gt;16&lt;/option&gt;\n&lt;option value=&quot;17&quot;&gt;17&lt;/option&gt;\n&lt;option value=&quot;18&quot;&gt;18&lt;/option&gt;\n&lt;option value=&quot;19&quot;&gt;19&lt;/option&gt;\n&lt;option value=&quot;20&quot;&gt;20&lt;/option&gt;\n&lt;option value=&quot;21&quot;&gt;21&lt;/option&gt;\n&lt;option value=&quot;22&quot;&gt;22&lt;/option&gt;\n&lt;option value=&quot;23&quot;&gt;23&lt;/option&gt;\n&lt;option value=&quot;24&quot;&gt;24&lt;/option&gt;\n&lt;option value=&quot;25&quot;&gt;25&lt;/option&gt;\n&lt;option value=&quot;26&quot;&gt;26&lt;/option&gt;\n&lt;option value=&quot;27&quot;&gt;27&lt;/option&gt;\n&lt;option value=&quot;28&quot;&gt;28&lt;/option&gt;\n&lt;option value=&quot;29&quot;&gt;29&lt;/option&gt;\n&lt;option value=&quot;30&quot;&gt;30&lt;/option&gt;\n&lt;option value=&quot;31&quot;&gt;31&lt;/option&gt;\n&lt;option value=&quot;32&quot;&gt;32&lt;/option&gt;\n&lt;option value=&quot;33&quot;&gt;33&lt;/option&gt;\n&lt;option value=&quot;34&quot;&gt;34&lt;/option&gt;\n&lt;option value=&quot;35&quot; selected=&quot;selected&quot;&gt;35&lt;/option&gt;\n&lt;option value=&quot;36&quot;&gt;36&lt;/option&gt;\n&lt;option value=&quot;37&quot;&gt;37&lt;/option&gt;\n&lt;option value=&quot;38&quot;&gt;38&lt;/option&gt;\n&lt;option value=&quot;39&quot;&gt;39&lt;/option&gt;\n&lt;option value=&quot;40&quot;&gt;40&lt;/option&gt;\n&lt;option value=&quot;41&quot;&gt;41&lt;/option&gt;\n&lt;option value=&quot;42&quot;&gt;42&lt;/option&gt;\n&lt;option value=&quot;43&quot;&gt;43&lt;/option&gt;\n&lt;option value=&quot;44&quot;&gt;44&lt;/option&gt;\n&lt;option value=&quot;45&quot;&gt;45&lt;/option&gt;\n&lt;option value=&quot;46&quot;&gt;46&lt;/option&gt;\n&lt;option value=&quot;47&quot;&gt;47&lt;/option&gt;\n&lt;option value=&quot;48&quot;&gt;48&lt;/option&gt;\n&lt;option value=&quot;49&quot;&gt;49&lt;/option&gt;\n&lt;option value=&quot;50&quot;&gt;50&lt;/option&gt;\n&lt;option value=&quot;51&quot;&gt;51&lt;/option&gt;\n&lt;option value=&quot;52&quot;&gt;52&lt;/option&gt;\n&lt;option value=&quot;53&quot;&gt;53&lt;/option&gt;\n&lt;option value=&quot;54&quot;&gt;54&lt;/option&gt;\n&lt;option value=&quot;55&quot;&gt;55&lt;/option&gt;\n&lt;option value=&quot;56&quot;&gt;56&lt;/option&gt;\n&lt;option value=&quot;57&quot;&gt;57&lt;/option&gt;\n&lt;option value=&quot;58&quot;&gt;58&lt;/option&gt;\n&lt;option value=&quot;59&quot;&gt;59&lt;/option&gt;\n}
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    assert_dom_equal expected, datetime_select(&quot;post&quot;, &quot;updated_at&quot;, :prompt=&gt;true)
+  end
+  
+  def test_datetime_select_with_custom_prompt
+    @post = Post.new
+    @post.updated_at = Time.local(2004, 6, 15, 16, 35)
+
+    expected = %{&lt;select id=&quot;post_updated_at_1i&quot; name=&quot;post[updated_at(1i)]&quot;&gt;\n}
+    expected &lt;&lt; %{&lt;option value=&quot;&quot;&gt;Choose year&lt;/option&gt;\n&lt;option value=&quot;1999&quot;&gt;1999&lt;/option&gt;\n&lt;option value=&quot;2000&quot;&gt;2000&lt;/option&gt;\n&lt;option value=&quot;2001&quot;&gt;2001&lt;/option&gt;\n&lt;option value=&quot;2002&quot;&gt;2002&lt;/option&gt;\n&lt;option value=&quot;2003&quot;&gt;2003&lt;/option&gt;\n&lt;option value=&quot;2004&quot; selected=&quot;selected&quot;&gt;2004&lt;/option&gt;\n&lt;option value=&quot;2005&quot;&gt;2005&lt;/option&gt;\n&lt;option value=&quot;2006&quot;&gt;2006&lt;/option&gt;\n&lt;option value=&quot;2007&quot;&gt;2007&lt;/option&gt;\n&lt;option value=&quot;2008&quot;&gt;2008&lt;/option&gt;\n&lt;option value=&quot;2009&quot;&gt;2009&lt;/option&gt;\n}
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    expected &lt;&lt; %{&lt;select id=&quot;post_updated_at_2i&quot; name=&quot;post[updated_at(2i)]&quot;&gt;\n}
+    expected &lt;&lt; %{&lt;option value=&quot;&quot;&gt;Choose month&lt;/option&gt;\n&lt;option value=&quot;1&quot;&gt;January&lt;/option&gt;\n&lt;option value=&quot;2&quot;&gt;February&lt;/option&gt;\n&lt;option value=&quot;3&quot;&gt;March&lt;/option&gt;\n&lt;option value=&quot;4&quot;&gt;April&lt;/option&gt;\n&lt;option value=&quot;5&quot;&gt;May&lt;/option&gt;\n&lt;option value=&quot;6&quot; selected=&quot;selected&quot;&gt;June&lt;/option&gt;\n&lt;option value=&quot;7&quot;&gt;July&lt;/option&gt;\n&lt;option value=&quot;8&quot;&gt;August&lt;/option&gt;\n&lt;option value=&quot;9&quot;&gt;September&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;October&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;November&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;December&lt;/option&gt;\n}
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    expected &lt;&lt; %{&lt;select id=&quot;post_updated_at_3i&quot; name=&quot;post[updated_at(3i)]&quot;&gt;\n}
+    expected &lt;&lt; %{&lt;option value=&quot;&quot;&gt;Choose day&lt;/option&gt;\n&lt;option value=&quot;1&quot;&gt;1&lt;/option&gt;\n&lt;option value=&quot;2&quot;&gt;2&lt;/option&gt;\n&lt;option value=&quot;3&quot;&gt;3&lt;/option&gt;\n&lt;option value=&quot;4&quot;&gt;4&lt;/option&gt;\n&lt;option value=&quot;5&quot;&gt;5&lt;/option&gt;\n&lt;option value=&quot;6&quot;&gt;6&lt;/option&gt;\n&lt;option value=&quot;7&quot;&gt;7&lt;/option&gt;\n&lt;option value=&quot;8&quot;&gt;8&lt;/option&gt;\n&lt;option value=&quot;9&quot;&gt;9&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;10&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;11&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;12&lt;/option&gt;\n&lt;option value=&quot;13&quot;&gt;13&lt;/option&gt;\n&lt;option value=&quot;14&quot;&gt;14&lt;/option&gt;\n&lt;option value=&quot;15&quot; selected=&quot;selected&quot;&gt;15&lt;/option&gt;\n&lt;option value=&quot;16&quot;&gt;16&lt;/option&gt;\n&lt;option value=&quot;17&quot;&gt;17&lt;/option&gt;\n&lt;option value=&quot;18&quot;&gt;18&lt;/option&gt;\n&lt;option value=&quot;19&quot;&gt;19&lt;/option&gt;\n&lt;option value=&quot;20&quot;&gt;20&lt;/option&gt;\n&lt;option value=&quot;21&quot;&gt;21&lt;/option&gt;\n&lt;option value=&quot;22&quot;&gt;22&lt;/option&gt;\n&lt;option value=&quot;23&quot;&gt;23&lt;/option&gt;\n&lt;option value=&quot;24&quot;&gt;24&lt;/option&gt;\n&lt;option value=&quot;25&quot;&gt;25&lt;/option&gt;\n&lt;option value=&quot;26&quot;&gt;26&lt;/option&gt;\n&lt;option value=&quot;27&quot;&gt;27&lt;/option&gt;\n&lt;option value=&quot;28&quot;&gt;28&lt;/option&gt;\n&lt;option value=&quot;29&quot;&gt;29&lt;/option&gt;\n&lt;option value=&quot;30&quot;&gt;30&lt;/option&gt;\n&lt;option value=&quot;31&quot;&gt;31&lt;/option&gt;\n}
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    expected &lt;&lt; &quot; &amp;mdash; &quot;
+
+    expected &lt;&lt; %{&lt;select id=&quot;post_updated_at_4i&quot; name=&quot;post[updated_at(4i)]&quot;&gt;\n}
+    expected &lt;&lt; %{&lt;option value=&quot;&quot;&gt;Choose hour&lt;/option&gt;\n&lt;option value=&quot;00&quot;&gt;00&lt;/option&gt;\n&lt;option value=&quot;01&quot;&gt;01&lt;/option&gt;\n&lt;option value=&quot;02&quot;&gt;02&lt;/option&gt;\n&lt;option value=&quot;03&quot;&gt;03&lt;/option&gt;\n&lt;option value=&quot;04&quot;&gt;04&lt;/option&gt;\n&lt;option value=&quot;05&quot;&gt;05&lt;/option&gt;\n&lt;option value=&quot;06&quot;&gt;06&lt;/option&gt;\n&lt;option value=&quot;07&quot;&gt;07&lt;/option&gt;\n&lt;option value=&quot;08&quot;&gt;08&lt;/option&gt;\n&lt;option value=&quot;09&quot;&gt;09&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;10&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;11&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;12&lt;/option&gt;\n&lt;option value=&quot;13&quot;&gt;13&lt;/option&gt;\n&lt;option value=&quot;14&quot;&gt;14&lt;/option&gt;\n&lt;option value=&quot;15&quot;&gt;15&lt;/option&gt;\n&lt;option value=&quot;16&quot; selected=&quot;selected&quot;&gt;16&lt;/option&gt;\n&lt;option value=&quot;17&quot;&gt;17&lt;/option&gt;\n&lt;option value=&quot;18&quot;&gt;18&lt;/option&gt;\n&lt;option value=&quot;19&quot;&gt;19&lt;/option&gt;\n&lt;option value=&quot;20&quot;&gt;20&lt;/option&gt;\n&lt;option value=&quot;21&quot;&gt;21&lt;/option&gt;\n&lt;option value=&quot;22&quot;&gt;22&lt;/option&gt;\n&lt;option value=&quot;23&quot;&gt;23&lt;/option&gt;\n}
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+    expected &lt;&lt; &quot; : &quot;
+    expected &lt;&lt; %{&lt;select id=&quot;post_updated_at_5i&quot; name=&quot;post[updated_at(5i)]&quot;&gt;\n}
+    expected &lt;&lt; %{&lt;option value=&quot;&quot;&gt;Choose minute&lt;/option&gt;\n&lt;option value=&quot;00&quot;&gt;00&lt;/option&gt;\n&lt;option value=&quot;01&quot;&gt;01&lt;/option&gt;\n&lt;option value=&quot;02&quot;&gt;02&lt;/option&gt;\n&lt;option value=&quot;03&quot;&gt;03&lt;/option&gt;\n&lt;option value=&quot;04&quot;&gt;04&lt;/option&gt;\n&lt;option value=&quot;05&quot;&gt;05&lt;/option&gt;\n&lt;option value=&quot;06&quot;&gt;06&lt;/option&gt;\n&lt;option value=&quot;07&quot;&gt;07&lt;/option&gt;\n&lt;option value=&quot;08&quot;&gt;08&lt;/option&gt;\n&lt;option value=&quot;09&quot;&gt;09&lt;/option&gt;\n&lt;option value=&quot;10&quot;&gt;10&lt;/option&gt;\n&lt;option value=&quot;11&quot;&gt;11&lt;/option&gt;\n&lt;option value=&quot;12&quot;&gt;12&lt;/option&gt;\n&lt;option value=&quot;13&quot;&gt;13&lt;/option&gt;\n&lt;option value=&quot;14&quot;&gt;14&lt;/option&gt;\n&lt;option value=&quot;15&quot;&gt;15&lt;/option&gt;\n&lt;option value=&quot;16&quot;&gt;16&lt;/option&gt;\n&lt;option value=&quot;17&quot;&gt;17&lt;/option&gt;\n&lt;option value=&quot;18&quot;&gt;18&lt;/option&gt;\n&lt;option value=&quot;19&quot;&gt;19&lt;/option&gt;\n&lt;option value=&quot;20&quot;&gt;20&lt;/option&gt;\n&lt;option value=&quot;21&quot;&gt;21&lt;/option&gt;\n&lt;option value=&quot;22&quot;&gt;22&lt;/option&gt;\n&lt;option value=&quot;23&quot;&gt;23&lt;/option&gt;\n&lt;option value=&quot;24&quot;&gt;24&lt;/option&gt;\n&lt;option value=&quot;25&quot;&gt;25&lt;/option&gt;\n&lt;option value=&quot;26&quot;&gt;26&lt;/option&gt;\n&lt;option value=&quot;27&quot;&gt;27&lt;/option&gt;\n&lt;option value=&quot;28&quot;&gt;28&lt;/option&gt;\n&lt;option value=&quot;29&quot;&gt;29&lt;/option&gt;\n&lt;option value=&quot;30&quot;&gt;30&lt;/option&gt;\n&lt;option value=&quot;31&quot;&gt;31&lt;/option&gt;\n&lt;option value=&quot;32&quot;&gt;32&lt;/option&gt;\n&lt;option value=&quot;33&quot;&gt;33&lt;/option&gt;\n&lt;option value=&quot;34&quot;&gt;34&lt;/option&gt;\n&lt;option value=&quot;35&quot; selected=&quot;selected&quot;&gt;35&lt;/option&gt;\n&lt;option value=&quot;36&quot;&gt;36&lt;/option&gt;\n&lt;option value=&quot;37&quot;&gt;37&lt;/option&gt;\n&lt;option value=&quot;38&quot;&gt;38&lt;/option&gt;\n&lt;option value=&quot;39&quot;&gt;39&lt;/option&gt;\n&lt;option value=&quot;40&quot;&gt;40&lt;/option&gt;\n&lt;option value=&quot;41&quot;&gt;41&lt;/option&gt;\n&lt;option value=&quot;42&quot;&gt;42&lt;/option&gt;\n&lt;option value=&quot;43&quot;&gt;43&lt;/option&gt;\n&lt;option value=&quot;44&quot;&gt;44&lt;/option&gt;\n&lt;option value=&quot;45&quot;&gt;45&lt;/option&gt;\n&lt;option value=&quot;46&quot;&gt;46&lt;/option&gt;\n&lt;option value=&quot;47&quot;&gt;47&lt;/option&gt;\n&lt;option value=&quot;48&quot;&gt;48&lt;/option&gt;\n&lt;option value=&quot;49&quot;&gt;49&lt;/option&gt;\n&lt;option value=&quot;50&quot;&gt;50&lt;/option&gt;\n&lt;option value=&quot;51&quot;&gt;51&lt;/option&gt;\n&lt;option value=&quot;52&quot;&gt;52&lt;/option&gt;\n&lt;option value=&quot;53&quot;&gt;53&lt;/option&gt;\n&lt;option value=&quot;54&quot;&gt;54&lt;/option&gt;\n&lt;option value=&quot;55&quot;&gt;55&lt;/option&gt;\n&lt;option value=&quot;56&quot;&gt;56&lt;/option&gt;\n&lt;option value=&quot;57&quot;&gt;57&lt;/option&gt;\n&lt;option value=&quot;58&quot;&gt;58&lt;/option&gt;\n&lt;option value=&quot;59&quot;&gt;59&lt;/option&gt;\n}
+    expected &lt;&lt; &quot;&lt;/select&gt;\n&quot;
+
+    assert_dom_equal expected, datetime_select(&quot;post&quot;, &quot;updated_at&quot;, :prompt=&gt;{:year=&gt;'Choose year', :month=&gt;'Choose month', :day=&gt;'Choose day', :hour=&gt;'Choose hour', :minute=&gt;'Choose minute'})
+  end
+  
   uses_mocha 'TestInstanceTagDefaultTimeFromOptions' do
     def test_instance_tag_default_time_from_options_uses_time_current_as_default_when_hash_passed_as_arg
       dummy_instance_tag = ActionView::Helpers::InstanceTag.new(1,2,3)</diff>
      <filename>actionpack/test/template/date_helper_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>2f4aaed7b3feb3be787a316fab3144c06bb21a27</id>
    </parent>
  </parents>
  <author>
    <name>Sam Oliver</name>
    <email>sam@samoliver.com</email>
  </author>
  <url>http://github.com/samoli/rails/commit/0d22364979bd882562035009a55e55efb1773385</url>
  <id>0d22364979bd882562035009a55e55efb1773385</id>
  <committed-date>2008-07-07T04:24:24-07:00</committed-date>
  <authored-date>2008-07-07T04:24:24-07:00</authored-date>
  <message>Added :prompt option to date helpers

Set :prompt to true (for a generic prompt) or a prompt string. For date helpers with mutiple fields, specify the prompt
you wish to set in a hash. This prepends an option with a generic prompt (Day, Month, Year, Hour, Minute, Seconds) or the given prompt
string.

Example:
   date_select(&quot;post&quot;, &quot;written_on&quot;, :prompt=&gt;{:day=&gt;'Select day', :month=&gt;'Select month', :year=&gt;'Select year'})

This is similar to the :prompt option in collection_select</message>
  <tree>572f84329cbdbe74fb70bb5e9e74a8dcbd6651e9</tree>
  <committer>
    <name>Sam Oliver</name>
    <email>sam@samoliver.com</email>
  </committer>
</commit>
