Class: CckForms::ParameterTypeClass::Enum
- Inherits:
-
Object
- Object
- CckForms::ParameterTypeClass::Enum
- Includes:
- Base
- Defined in:
- lib/cck_forms/parameter_type_class/enum.rb
Overview
Represents a enum (SELECT).
Instance Method Summary collapse
-
#build_form(form_builder, options) ⇒ Object
options:.
- #mongoize ⇒ Object
-
#search(selectable, field, query) ⇒ Object
Constructs MongoDB query.
-
#to_s(_options = nil) ⇒ Object
Current string value from valid_values.
Instance Method Details
#build_form(form_builder, options) ⇒ Object
options:
as - if 'checkboxes', display a set of checkboxes, not SELECT
only - leave only these keys (array/string)
except - reverse of :only
required - HTML required attr
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/cck_forms/parameter_type_class/enum.rb', line 37 def build_form(form_builder, ) if .is_a? Hash and [:as] == 'checkboxes' = .except(:for, :as) checkboxes = CckForms::ParameterTypeClass::Checkboxes.new valid_values: self.valid_values, value: self.value return checkboxes.build_form(form_builder, ) end set_value_in_hash values = valid_values_enum if [:only] [:only] = [[:only]] unless [:only].is_a? Array values.select! { |o| o[1].in? [:only] } end if [:except] [:except] = [[:except]] unless [:except].is_a? Array values.reject! { |o| o[1].in? [:except] } end form_builder.select :value, values, {selected: [:value], required: [:required], include_blank: ![:required]}, class: 'form-control ' end |
#mongoize ⇒ Object
6 7 8 |
# File 'lib/cck_forms/parameter_type_class/enum.rb', line 6 def mongoize value.presence end |
#search(selectable, field, query) ⇒ Object
Constructs MongoDB query. If query is a Hash, find all objects where field is any of the hash keys, for which value is ‘1’. Otherwise treat query as where(filed => query).
18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/cck_forms/parameter_type_class/enum.rb', line 18 def search(selectable, field, query) if query.is_a? Hash query = query.map { |k, v| v == '1' ? k : nil }.compact end query = [query] unless query.is_a? Array if query.any? selectable.where(field.to_sym.in => query) else selectable end end |
#to_s(_options = nil) ⇒ Object
Current string value from valid_values
11 12 13 14 |
# File 'lib/cck_forms/parameter_type_class/enum.rb', line 11 def to_s( = nil) return '' if value.blank? valid_values[value].to_s end |