Class: DynamicScaffold::Form::Item::Cocoon

Inherits:
Base
  • Object
show all
Defined in:
lib/dynamic_scaffold/form/item/cocoon.rb

Instance Attribute Summary collapse

Attributes inherited from Base

#name

Instance Method Summary collapse

Methods inherited from Base

create, #default, #default_value, #errors, #if, #insert, #label, #label?, #needs_rendering?, #note, #notes?, #proxy, #proxy_field, #render_label, #render_notes, #type?, #unique_name, #unless

Constructor Details

#initialize(config, type, name, options = {}) {|@form| ... } ⇒ Cocoon

Returns a new instance of Cocoon.

Yields:



6
7
8
9
10
11
# File 'lib/dynamic_scaffold/form/item/cocoon.rb', line 6

def initialize(config, type, name, options = {})
  super
  @options = options
  @form = FormBuilder.new(config)
  yield(@form)
end

Instance Attribute Details

#formObject (readonly)

Returns the value of attribute form.



5
6
7
# File 'lib/dynamic_scaffold/form/item/cocoon.rb', line 5

def form
  @form
end

Instance Method Details

#add_textObject



22
23
24
# File 'lib/dynamic_scaffold/form/item/cocoon.rb', line 22

def add_text
  @options[:add_text] || "Add #{proxy_field.label}"
end

#build_children(record) ⇒ Object



26
27
28
29
30
# File 'lib/dynamic_scaffold/form/item/cocoon.rb', line 26

def build_children(record)
  children = record.public_send(name).to_a
  children = @filter.call(children) if @filter.present?
  children
end

#extract_parameters(permitting) ⇒ Object



13
14
15
# File 'lib/dynamic_scaffold/form/item/cocoon.rb', line 13

def extract_parameters(permitting)
  permitting << { "#{@name}_attributes": [*@form.items.map(&:name).push(:_destroy)] }
end

#filter(&block) ⇒ Object



17
18
19
20
# File 'lib/dynamic_scaffold/form/item/cocoon.rb', line 17

def filter(&block)
  @filter = block
  self
end