Class: Hellobase::Formtastic::Inputs::ArrayTextInput

Inherits:
Formtastic::Inputs::TextInput
  • Object
show all
Defined in:
lib/hellobase/formtastic/inputs/array_text_input.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.define_virtual_attributes(klass, base) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/hellobase/formtastic/inputs/array_text_input.rb', line 11

def self.define_virtual_attributes(klass, base)
  vattr = virtual_attributes(base).first
  ivar = :"@#{vattr}"
  method = :"_stra_set_#{base}"

  klass.class_eval do
    define_method vattr do
      send(base)&.join("\n")
    end

    define_method :"#{vattr}=" do |val|
      instance_variable_set ivar, val
      send(method)

      val
    end

    define_method method do
      send :"#{base}=", instance_variable_get(ivar)&.split(/[\r\n]+/)
    end

    private method
  end
end

.virtual_attributes(base) ⇒ Object



7
8
9
# File 'lib/hellobase/formtastic/inputs/array_text_input.rb', line 7

def self.virtual_attributes(base)
  [:"_stra_#{base}_text"]
end

Instance Method Details

#to_htmlObject



36
37
38
39
40
41
# File 'lib/hellobase/formtastic/inputs/array_text_input.rb', line 36

def to_html
  input_wrapping do
    label_html <<
    builder.text_area(:"_stra_#{method}_text", input_html_options)
  end
end