class Interview::AssociationListAttribute

Attributes

size[RW]
use[RW]

Protected Instance Methods

build_read(b) click to toggle source
# File lib/interview/controls/association_list_attribute.rb, line 8
def build_read(b)
  return if value.nil?
  assoc_objects = value
  assoc_count = assoc_objects.count
  if @use == 'link'
    b.link caption: "#{@method.humanize} (#{assoc_count})", object: "#{assoc_objects.klass}",
           filter: assoc_objects.where_values_hash # todo: Überarbeiten
  else
    b.text text: assoc_objects.human_ids.join(', ')
  end
end
build_write(b) click to toggle source
# File lib/interview/controls/association_list_attribute.rb, line 20
def build_write(b)
  size = @size || 8
  if @use == 'multi_select'
    object = @object || find_attribute!(:object)
    if object.respond_to? "#{method.singularize}_pool"
      pool = object.send "#{method.singularize}_pool"
    else
      assoc_class = object.class.new.send(@method).build.class
      pool = assoc_class.all
    end
    form_builder.collection_select "#{@method.singularize}_ids", pool, :id, :human_id, {prompt: true}, {class: 'form-control', multiple: true, size: size}
    # form_builder.collection_select "#{@method.singularize}_ids", Category.all.collect {|x| [x.name, x.id]}, {}, :multiple => true
  else
    b << form_builder.text_field("#{@method}_human_ids_string", class: 'form-control')
  end
end