Sha256: a0a4b24ec6fc489add4bccfb81261b621771bac4ebca431addfc7c31f8ecf862

Contents?: true

Size: 854 Bytes

Versions: 8

Compression:

Stored size: 854 Bytes

Contents

module DynamicScaffold
  module Form
    module Item
      class Cocoon < Base
        attr_reader :form
        def initialize(config, type, name, options = {})
          super
          @options = options
          @form = FormBuilder.new(config)
          @form.parent_item = self
          yield(@form)
        end

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

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

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

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

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
dynamic_scaffold-1.12.2 lib/dynamic_scaffold/form/item/cocoon.rb
dynamic_scaffold-1.12.1 lib/dynamic_scaffold/form/item/cocoon.rb
dynamic_scaffold-1.12.0 lib/dynamic_scaffold/form/item/cocoon.rb
dynamic_scaffold-1.11.0 lib/dynamic_scaffold/form/item/cocoon.rb
dynamic_scaffold-1.10.0 lib/dynamic_scaffold/form/item/cocoon.rb
dynamic_scaffold-1.9.0 lib/dynamic_scaffold/form/item/cocoon.rb
dynamic_scaffold-1.8.1 lib/dynamic_scaffold/form/item/cocoon.rb
dynamic_scaffold-1.8.0 lib/dynamic_scaffold/form/item/cocoon.rb