Sha256: 0dbd15e64ac7c1b561aac5dce3e6ee9cd4a210bb46ff804be7e92db580691cf3

Contents?: true

Size: 1.38 KB

Versions: 8

Compression:

Stored size: 1.38 KB

Contents

module RecordSelect
  def self.included(base)
    base.send :extend, ClassMethods
  end

  module ClassMethods
    # Enables and configures RecordSelect on your controller.
    #
    # *Options*
    # +model+::     defaults based on the name of the controller
    # +per_page+::  records to show per page when browsing
    # +notify+::    a method name to invoke when a record has been selected.
    # +order_by+::  a SQL string to order the search results
    # +search_on+:: an array of searchable fields
    # +full_text_search+::  a boolean for whether to use a %?% search pattern or not. default is false.
    # +label+::     a proc that accepts a record as argument and returns an option label. default is to call record.to_label instead.
    # +include+::   as for ActiveRecord::Base#find. can help with search conditions or just help optimize rendering the results.
    #
    # You may also pass a block, which will be used as options[:notify].
    def record_select(options = {})
      options[:model] ||= self.to_s.split('::').last.sub(/Controller$/, '').pluralize.singularize.underscore
      @record_select_config = RecordSelect::Config.new(options.delete(:model), options)
      self.send :include, RecordSelect::Actions
      self.send :include, RecordSelect::Conditions
    end

    attr_reader :record_select_config

    def uses_record_select?
      !record_select_config.nil?
    end
  end
end

Version data entries

8 entries across 6 versions & 3 rubygems

Version Path
record_select-0.0.2 lib/record_select.rb
record_select-0.0.1 lib/record_select.rb
record_select-0.0.4 lib/record_select.rb
record_select-0.0.4 lib/recordselect_custom.rb
record_select-0.0.3 lib/record_select.rb
record_select-0.0.3 lib/recordselect_custom.rb
recordselect_custom-0.0.2 lib/record_select.rb
recordselect-custom-0.0.1 lib/record_select.rb