class ActionView::Helpers::InstanceTag
def add_options(option_tags, options, value = nil)
def add_options(option_tags, options, value = nil) if options[:include_blank] option_tags = content_tag('option', options[:include_blank].kind_of?(String) ? options[:include_blank] : nil, :value => '') + "\n" + option_tags end if value.blank? && options[:prompt] prompt = options[:prompt].kind_of?(String) ? options[:prompt] : I18n.translate('helpers.select.prompt', :default => 'Please select') option_tags = content_tag('option', prompt, :value => '') + "\n" + option_tags end option_tags end
def datetime_selector(options, html_options)
def datetime_selector(options, html_options) datetime = value(object) || default_datetime(options) options = options.dup options[:field_name] = @method_name options[:include_position] = true options[:prefix] ||= @object_name options[:index] = @auto_index if @auto_index && !options.has_key?(:index) DateTimeSelector.new(datetime, options, html_options) end
def default_datetime(options)
def default_datetime(options) return if options[:include_blank] || options[:prompt] case options[:default] when nil Time.current when Date, Time options[:default] else default = options[:default].dup # Rename :minute and :second to :min and :sec default[:min] ||= default[:minute] default[:sec] ||= default[:second] time = Time.current [:year, :month, :day, :hour, :min, :sec].each do |key| default[key] ||= time.send(key) end Time.utc_time( default[:year], default[:month], default[:day], default[:hour], default[:min], default[:sec] ) end end
def to_collection_select_tag(collection, value_method, text_method, options, html_options)
def to_collection_select_tag(collection, value_method, text_method, options, html_options) html_options = html_options.stringify_keys add_default_name_and_id(html_options) value = value(object) disabled_value = options.has_key?(:disabled) ? options[:disabled] : nil selected_value = options.has_key?(:selected) ? options[:selected] : value content_tag( "select", add_options(options_from_collection_for_select(collection, value_method, text_method, :selected => selected_value, :disabled => disabled_value), options, value), html_options ) end
def to_date_select_tag(options = {}, html_options = {})
def to_date_select_tag(options = {}, html_options = {}) datetime_selector(options, html_options).select_date.html_safe end
def to_datetime_select_tag(options = {}, html_options = {})
def to_datetime_select_tag(options = {}, html_options = {}) datetime_selector(options, html_options).select_datetime.html_safe end
def to_grouped_collection_select_tag(collection, group_method, group_label_method, option_key_method, option_value_method, options, html_options)
def to_grouped_collection_select_tag(collection, group_method, group_label_method, option_key_method, option_value_method, options, html_options) html_options = html_options.stringify_keys add_default_name_and_id(html_options) value = value(object) content_tag( "select", add_options(option_groups_from_collection_for_select(collection, group_method, group_label_method, option_key_method, option_value_method, value), options, value), html_options ) end
def to_select_tag(choices, options, html_options)
def to_select_tag(choices, options, html_options) html_options = html_options.stringify_keys add_default_name_and_id(html_options) value = value(object) selected_value = options.has_key?(:selected) ? options[:selected] : value disabled_value = options.has_key?(:disabled) ? options[:disabled] : nil content_tag("select", add_options(options_for_select(choices, :selected => selected_value, :disabled => disabled_value), options, selected_value), html_options) end
def to_time_select_tag(options = {}, html_options = {})
def to_time_select_tag(options = {}, html_options = {}) datetime_selector(options, html_options).select_time.html_safe end
def to_time_zone_select_tag(priority_zones, options, html_options)
def to_time_zone_select_tag(priority_zones, options, html_options) html_options = html_options.stringify_keys add_default_name_and_id(html_options) value = value(object) content_tag("select", add_options( time_zone_options_for_select(value || options[:default], priority_zones, options[:model] || ActiveSupport::TimeZone), options, value ), html_options ) end