Sha256: 3a9d722004aa9ab0d3833a3321aab4c765fc4d4ff7c2eb765da9e8d52287600b

Contents?: true

Size: 1.28 KB

Versions: 46

Compression:

Stored size: 1.28 KB

Contents

module Effective
  class FormLogic
    attr_accessor :args, :options

    delegate :object, to: :@builder
    delegate :capture, :content_tag, :link_to, :icon, to: :@template

    # So this takes in the options for an entire form group.
    def initialize(*args, builder:)
      @builder = builder
      @template = builder.template
      @options ||= {}

      validate!(args)
      @args = args
    end

    def validate!(args)
      raise 'expected one or more argument' if args.blank?
    end

    # https://github.com/rails/rails/blob/master/actionview/lib/action_view/helpers/tags/base.rb#L108
    def tag_name(name, multiple = false, index = nil)
      sanitized_method_name = name.to_s.sub(/\?$/, "")

      case
      when @builder.object_name.empty?
        "#{sanitized_method_name}#{multiple ? "[]" : ""}"
      when index
        "#{@builder.object_name}[#{index}][#{sanitized_method_name}]#{multiple ? "[]" : ""}"
      else
        "#{@builder.object_name}[#{sanitized_method_name}]#{multiple ? "[]" : ""}"
      end
    end

    def input_js_options
      { 'data-input-js-options' => JSON.generate({method_name: input_js_options_method_name}.merge!(logic_options)) }
    end

    def input_js_options_method_name
      "effective_#{self.class.name.split('::').last.underscore}"
    end

  end
end

Version data entries

46 entries across 46 versions & 1 rubygems

Version Path
effective_bootstrap-0.9.48 app/models/effective/form_logic.rb
effective_bootstrap-0.9.47 app/models/effective/form_logic.rb
effective_bootstrap-0.9.46 app/models/effective/form_logic.rb
effective_bootstrap-0.9.45 app/models/effective/form_logic.rb
effective_bootstrap-0.9.44 app/models/effective/form_logic.rb
effective_bootstrap-0.9.43 app/models/effective/form_logic.rb
effective_bootstrap-0.9.42 app/models/effective/form_logic.rb
effective_bootstrap-0.9.41 app/models/effective/form_logic.rb
effective_bootstrap-0.9.40 app/models/effective/form_logic.rb
effective_bootstrap-0.9.39 app/models/effective/form_logic.rb
effective_bootstrap-0.9.38 app/models/effective/form_logic.rb
effective_bootstrap-0.9.37 app/models/effective/form_logic.rb
effective_bootstrap-0.9.36 app/models/effective/form_logic.rb
effective_bootstrap-0.9.35 app/models/effective/form_logic.rb
effective_bootstrap-0.9.34 app/models/effective/form_logic.rb
effective_bootstrap-0.9.33 app/models/effective/form_logic.rb
effective_bootstrap-0.9.32 app/models/effective/form_logic.rb
effective_bootstrap-0.9.31 app/models/effective/form_logic.rb
effective_bootstrap-0.9.30 app/models/effective/form_logic.rb
effective_bootstrap-0.9.29 app/models/effective/form_logic.rb