rendered paste body def has_many_select(object, association, options = {}) choices = Module.const_get(association.to_s.classify).find(:all, options[:find]).collect{|c| [c.name, c.id]} method = association.to_s.foreign_key.pluralize selected_ids = object.method(association.to_s.pluralize).call.collect{|o| o.id} object_name = object.type.to_s.underscore html = '' choices.each do |o| o = [o, o] unless o.kind_of? Array checkbox_options = {} value = o[1] checkbox_options[:type] = "checkbox" checkbox_options[:class] = "checkbox" checkbox_options[:name] = "#{object_name}[#{method}][]" checkbox_options[:value] = value checkbox_options[:id] = "#{object_name}_#{method}_#{value}" checkbox_options[:checked] = "checked" if selected_ids.include? value html << content_tag('label', tag('input', checkbox_options) + o[0],:for => options[:id]) end content_tag 'div', html, :class => 'multi_select' end