public Method

DateHelper.select_month(date, options = {})

Returns a select tag with options for each of the months January through December with the current month selected. The month names are presented as keys (what’s shown to the user) and the month numbers (1-12) are used as values (what’s submitted to the server). It’s also possible to use month numbers for the presentation instead of names — set the :use_month_numbers key in options to true for this to happen. If you want both numbers and names, set the :add_month_numbers key in options to true. If you would prefer to show month names as abbreviations, set the :use_short_month key in options to true. If you want to use your own month names, set the :use_month_names key in options to an array of 12 month names. Override the field name using the :field_name option, ‘month’ by default.

Examples

# Generates a select field for months that defaults to the current month that
# will use keys like "January", "March".
select_month(Date.today)

# Generates a select field for months that defaults to the current month that
# is named "start" rather than "month"
select_month(Date.today, :field_name => 'start')

# Generates a select field for months that defaults to the current month that
# will use keys like "1", "3".
select_month(Date.today, :use_month_numbers => true)

# Generates a select field for months that defaults to the current month that
# will use keys like "1 - January", "3 - March".
select_month(Date.today, :add_month_numbers => true)

# Generates a select field for months that defaults to the current month that
# will use keys like "Jan", "Mar".
select_month(Date.today, :use_short_month => true)

# Generates a select field for months that defaults to the current month that
# will use keys like "Januar", "Marts."
select_month(Date.today, :use_month_names => %w(Januar Februar Marts ...))

Source Code

# File action_view/helpers/date_helper.rb, line 482
def select_month(date, options = {})
  val = date ? (date.kind_of?(Fixnum) ? date : date.month) : ''
  if options[:use_hidden]
    hidden_html(options[:field_name] || 'month', val, options)
  else
    month_options = []
    month_names = options[:use_month_names] || (options[:use_short_month] ? Date::ABBR_MONTHNAMES : Date::MONTHNAMES)
    month_names.unshift(nil) if month_names.size < 13
    1.upto(12) do |month_number|
      month_name = if options[:use_month_numbers]
        month_number
      elsif options[:add_month_numbers]
        month_number.to_s + ' - ' + month_names[month_number]
      else
        month_names[month_number]
      end

      month_options << ((val == month_number) ?
        %(<option value="#{month_number}" selected="selected">#{month_name}</option>\n) :
        %(<option value="#{month_number}">#{month_name}</option>\n)
      )
    end
    select_html(options[:field_name] || 'month', month_options.join, options)
  end
end
Comments

Have your say
Please use Textile formatting (click here for a cheat sheet). Use <code/> and <pre/> for code samples.
Click here to login with OpenID to to post comments.