class RecordSelect::Config
a write-once configuration object
Public Class Methods
# File lib/record_select/config.rb, line 28 def self.js_framework @@js_framework ||= if defined? Jquery :jquery elsif defined? PrototypeRails :prototype end end
# File lib/record_select/config.rb, line 24 def self.js_framework=(framework) @@js_framework = framework end
# File lib/record_select/config.rb, line 4 def initialize(klass, options = {}) @klass = klass @notify = block_given? ? proc : options[:notify] @per_page = options[:per_page] @search_on = [options[:search_on]].flatten unless options[:search_on].nil? @order_by = options[:order_by] @full_text_search = options[:full_text_search] @label = options[:label] @include = options[:include] @link = options[:link] end
Public Instance Methods
# File lib/record_select/config.rb, line 62 def full_text_search? @full_text_search ? true : false end
# File lib/record_select/config.rb, line 66 def include @include end
If a proc, must accept the record as an argument and return a descriptive string.
If a symbol or string, must name a partial that renders a representation of the record. The partial should assume a local “record” variable, and should include a <label> tag, even if it's not visible. The contents of the <label> tag will be used to represent the record once it has been selected. For example:
record_select_config.label = :user_description
> app/views/users/_user_description.erb
<div class="user_description"> <%= image_tag url_for_file_column(record, 'avatar') %> <label><%= record.username %></label> <p><%= record.quote %></p> </div>
# File lib/record_select/config.rb, line 87 def label @label ||= proc {|r| r.to_label} end
whether wrap the text returned by label in a link or not
# File lib/record_select/config.rb, line 92 def link? @link.nil? ? true : @link end
The model object we're browsing
# File lib/record_select/config.rb, line 37 def model @model ||= klass.to_s.camelcase.constantize end
The method name or proc to notify of a selection event. May not matter if the selection event is intercepted client-side.
# File lib/record_select/config.rb, line 48 def notify @notify end
# File lib/record_select/config.rb, line 58 def order_by @order_by ||= "#{model.table_name}.#{model.primary_key} ASC" unless @order_by == false end
Records to show on a page
# File lib/record_select/config.rb, line 42 def per_page @per_page ||= 10 end
A collection of fields to search. This is essentially raw SQL, so you could search on “CONCAT(first_name, ' ', last_name)” if you wanted to. NOTE: this does NO default transforms (such as LOWER()), that's left entirely up to you.
# File lib/record_select/config.rb, line 54 def search_on @search_on ||= self.model.columns.collect{|c| c.name if [:text, :string].include? c.type}.compact end
Protected Instance Methods
A singularized underscored version of the model we're browsing
# File lib/record_select/config.rb, line 99 def klass @klass end