class Object

Public Instance Methods

anchor(anchor_options) click to toggle source
# File lib/dynamic-fields-for/feature.rb, line 95
def anchor(anchor_options)
  return ''.html_safe if anchor_options.nil?

  @template.content_tag(:script, nil, dynamic_fields_data_options(anchor_options))
end
cover_by_anchors(begin_anchor_options, content, end_anchor_options = nil) click to toggle source
# File lib/dynamic-fields-for/feature.rb, line 85
def cover_by_anchors(begin_anchor_options, content, end_anchor_options = nil)
  anchor(begin_anchor_options) + content + anchor(end_anchor_options)
end
cover_by_anchors_if(condition, begin_anchor_options, content, end_anchor_options = nil) click to toggle source
# File lib/dynamic-fields-for/feature.rb, line 89
def cover_by_anchors_if(condition, begin_anchor_options, content, end_anchor_options = nil)
  condition ?
    cover_by_anchors(begin_anchor_options, content, end_anchor_options) :
    content
end
dynamic_fields_data_options(anchor_options) click to toggle source
# File lib/dynamic-fields-for/feature.rb, line 76
def dynamic_fields_data_options(anchor_options)
  return nil if anchor_options.nil?

  anchor_options.inject({data: {}}) do |mem, (key, value)|
    mem[:data][:"dynamic-fields-#{key}"] = value.html_safe? ? value : value.html_safe
    mem
  end
end
dynamic_fields_id(association) click to toggle source
# File lib/dynamic-fields-for/feature.rb, line 72
def dynamic_fields_id(association)
  "#{self.object_id}-#{association}"
end
fields_for(association, record_object = nil, options = {}, &block) click to toggle source
Calls superclass method
# File lib/dynamic-fields-for/feature.rb, line 8
def fields_for(association, record_object = nil, options = {}, &block)
  #Inherit the native parameters adjustment
  options, record_object = record_object, nil if record_object.is_a?(Hash) && record_object.extractable_options?

  return super(association, record_object, options, &block) unless options.delete(:dynamic)

  soft_build_method_name = :"#{association}_soft_build"
  new_object = @object.respond_to?(soft_build_method_name) ?
    @object.send(soft_build_method_name) :
    @object.association(association).soft_build

  options[:child_index] = 'dynamic_fields_index'
  remove_template = super(association, new_object, options) do |f|
    f.hidden_field(:id, value: 'dynamic_fields_object_id') +
    f.hidden_field(:_destroy, value: true)
  end

  options[:dynamic_fields_id] = dynamic_fields_id(association)
  add_template = super(association, new_object, options, &block)

  options.delete(:child_index)
  collection_output = super(association, record_object, options, &block)

  cover_by_anchors(
    {
      begin: options[:dynamic_fields_id],
      'add-template' => CGI.escapeHTML(add_template),
      'remove-template' => CGI.escapeHTML(remove_template)
    },
    collection_output,
    {end: options[:dynamic_fields_id]}
  )
end
fields_for_nested_model(name, object, fields_options, block) click to toggle source
Calls superclass method
# File lib/dynamic-fields-for/feature.rb, line 44
def fields_for_nested_model(name, object, fields_options, block)
  cover_by_anchors_if(
    fields_options.has_key?(:dynamic_fields_id),
    {'item-begin' => fields_options[:dynamic_fields_id]},
    super(name, object, fields_options, block)
  )
end