Sha256: 9ab4e4267ee0de0cb38a6c4ecb88d2704951d8785c5eeccd762a0958d671821c

Contents?: true

Size: 1.43 KB

Versions: 2

Compression:

Stored size: 1.43 KB

Contents

module AutoCompleteFormBuilderHelper

  def class_name
    "#{@object.class.to_s.underscore}"
  end

  def sanitized_object_name
    @object_name.gsub(/\]\[|[^-a-zA-Z0-9:.]/, "_").sub(/_$/, "")
  end

  def is_used_as_nested_attribute?
    /\[#{class_name.pluralize}_attributes\]\[[0-9]+\]/.match @object_name
  end
  
  def text_field_with_auto_complete(method, tag_options = {}, completion_options = {})
    if completion_options[:child_index]
      unique_object_name = "#{class_name}_#{completion_options[:child_index]}"
    elsif @options[:child_index]
      unique_object_name = "#{class_name}_#{@options[:child_index]}"
    elsif is_used_as_nested_attribute?
      unique_object_name = sanitized_object_name
    else
      unique_object_name = "#{class_name}_#{Object.new.object_id.abs}"
    end
    completion_options_for_class_name = {
      :url => { :action => "auto_complete_for_#{class_name}_#{method}" },
      :param_name => "#{class_name}[#{method}]"
    }.update(completion_options)
    @template.auto_complete_field_with_style_and_script(unique_object_name,
                                                        method,
                                                        tag_options,
                                                        completion_options_for_class_name
                                                       ) do
      text_field(method, { :id => "#{unique_object_name}_#{method}" }.update(tag_options))
    end
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
repeated_auto_complete-0.1.1 lib/auto_complete_form_builder_helper.rb
repeated_auto_complete-0.1.0 lib/auto_complete_form_builder_helper.rb