Skip to content

Instantly share code, notes, and snippets.

@rono23
Created February 28, 2013 06:07
Show Gist options
  • Select an option

  • Save rono23/5054614 to your computer and use it in GitHub Desktop.

Select an option

Save rono23/5054614 to your computer and use it in GitHub Desktop.
Rails3で、date_select, datatime_selectに年、日などを追加する
module ActionView
module Helpers
class DateTimeSelector
def build_options_with_unit(selected, options = {})
start = options.delete(:start) || 0
stop = options.delete(:end) || 59
step = options.delete(:step) || 1
options.reverse_merge!({:leading_zeros => true, :ampm => false, :use_two_digit_numbers => false})
leading_zeros = options.delete(:leading_zeros)
select_options = []
start.step(stop, step) do |i|
value = leading_zeros ? sprintf("%02d", i) : i
tag_options = { :value => value }
tag_options[:selected] = "selected" if selected == i
text = options[:use_two_digit_numbers] ? sprintf("%02d", i) : value
text = options[:ampm] ? AMPM_TRANSLATION[i] : text
text = options[:use_unit] ? text.to_s + options[:use_unit] : text
select_options << content_tag(:option, text, tag_options)
end
(select_options.join("\n") + "\n").html_safe
end
alias_method_chain :build_options, :unit
def build_options_and_select_with_unit(type, selected, options = {})
unit = "use_unit_#{type.to_s}".to_sym
options.merge!({use_unit: @options[unit]}) if @options[unit].present?
build_select(type, build_options(selected, options))
end
alias_method_chain :build_options_and_select, :unit
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment