Class: Selectize::Ajax::Core::Control
- Inherits:
-
Object
- Object
- Selectize::Ajax::Core::Control
- Defined in:
- lib/selectize/ajax/core/control.rb
Instance Attribute Summary collapse
-
#field ⇒ Object
Returns the value of attribute field.
-
#options ⇒ Object
Returns the value of attribute options.
-
#resource ⇒ Object
Returns the value of attribute resource.
Instance Method Summary collapse
- #can_add? ⇒ Boolean
- #can_edit? ⇒ Boolean
- #edit_resource_template ⇒ Object
- #field_required? ⇒ Boolean
- #has_error? ⇒ Boolean
-
#initialize(resource, field, options = {}) ⇒ Control
constructor
A new instance of Control.
- #label ⇒ Object
- #resource_id ⇒ Object
- #resource_name ⇒ Object
- #resource_object ⇒ Object
- #value ⇒ Object
- #wrap_classes ⇒ Object
Constructor Details
Instance Attribute Details
#field ⇒ Object
Returns the value of attribute field.
3 4 5 |
# File 'lib/selectize/ajax/core/control.rb', line 3 def field @field end |
#options ⇒ Object
Returns the value of attribute options.
3 4 5 |
# File 'lib/selectize/ajax/core/control.rb', line 3 def @options end |
#resource ⇒ Object
Returns the value of attribute resource.
3 4 5 |
# File 'lib/selectize/ajax/core/control.rb', line 3 def resource @resource end |
Instance Method Details
#can_add? ⇒ Boolean
77 78 79 |
# File 'lib/selectize/ajax/core/control.rb', line 77 def can_add? .add_path.present? && .add_modal.present? end |
#can_edit? ⇒ Boolean
81 82 83 |
# File 'lib/selectize/ajax/core/control.rb', line 81 def can_edit? .edit_path.present? && .edit_modal.present? end |
#edit_resource_template ⇒ Object
32 33 34 35 36 37 38 39 40 41 |
# File 'lib/selectize/ajax/core/control.rb', line 32 def edit_resource_template return unless can_edit? @edit_resource ||= .edit_path if .edit_path.index('{{id}}').blank? @edit_resource ||= .edit_path.split('/').reverse.map do |part| break '{{id}}' unless part.to_i.zero? part end.reverse.join('/') URI.unescape(@edit_resource) end |
#field_required? ⇒ Boolean
51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/selectize/ajax/core/control.rb', line 51 def field_required? return false unless .required return false if resource_object.blank? || !resource_object.respond_to?(:_validators) validators = resource_object._validators[field].map(&:class) rescue [] [ validators.include?(ActiveModel::Validations::PresenceValidator), validators.include?(ActiveRecord::Validations::PresenceValidator) ].any? rescue false end |
#has_error? ⇒ Boolean
73 74 75 |
# File 'lib/selectize/ajax/core/control.rb', line 73 def has_error? @has_error ||= resource_object? ? resource_object&.errors&.include?(field) : false end |
#label ⇒ Object
28 29 30 |
# File 'lib/selectize/ajax/core/control.rb', line 28 def label (.label || field.to_s.titleize) if .label != false end |
#resource_id ⇒ Object
19 20 21 |
# File 'lib/selectize/ajax/core/control.rb', line 19 def resource_id [resource_name, field].join('_') end |
#resource_name ⇒ Object
11 12 13 14 15 16 17 |
# File 'lib/selectize/ajax/core/control.rb', line 11 def resource_name return resource.to_s.underscore.to_sym unless resource_object? class_name = resource.class.name.split('::').last return :form if class_name == 'Form' class_name.chomp('Form').underscore.to_sym end |
#resource_object ⇒ Object
43 44 45 46 47 48 49 |
# File 'lib/selectize/ajax/core/control.rb', line 43 def resource_object @model_object ||= if resource_object? resource else resource.to_s.classify.constantize rescue nil end end |
#value ⇒ Object
23 24 25 26 |
# File 'lib/selectize/ajax/core/control.rb', line 23 def value return .value if .value.present? return resource.send(field) if resource_object? && resource.respond_to?(field) end |
#wrap_classes ⇒ Object
63 64 65 66 67 68 69 70 71 |
# File 'lib/selectize/ajax/core/control.rb', line 63 def wrap_classes return if .wrap_class == false return .wrap_class if .wrap_class_only classes = [.wrap_class] classes << 'selectize-input-group' if can_add? classes << (.horizontal ? 'col-sm-9' : 'col-sm-12') classes.compact.reject(&:blank?).join(' ') end |