Sha256: 2c4cbf2fe22aaee330249ee148346a1cce9b5690c51b2f88f2aab42346c2d1b9

Contents?: true

Size: 1.28 KB

Versions: 99

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

99 entries across 99 versions & 1 rubygems

Version Path
effective_bootstrap-0.5.6 app/models/effective/form_logic.rb
effective_bootstrap-0.5.5 app/models/effective/form_logic.rb
effective_bootstrap-0.5.4 app/models/effective/form_logic.rb
effective_bootstrap-0.5.3 app/models/effective/form_logic.rb
effective_bootstrap-0.5.2 app/models/effective/form_logic.rb
effective_bootstrap-0.5.1 app/models/effective/form_logic.rb
effective_bootstrap-0.5.0 app/models/effective/form_logic.rb
effective_bootstrap-0.4.8 app/models/effective/form_logic.rb
effective_bootstrap-0.4.7 app/models/effective/form_logic.rb
effective_bootstrap-0.4.6 app/models/effective/form_logic.rb
effective_bootstrap-0.4.5 app/models/effective/form_logic.rb
effective_bootstrap-0.4.4 app/models/effective/form_logic.rb
effective_bootstrap-0.4.3 app/models/effective/form_logic.rb
effective_bootstrap-0.4.2 app/models/effective/form_logic.rb
effective_bootstrap-0.4.1 app/models/effective/form_logic.rb
effective_bootstrap-0.4.0 app/models/effective/form_logic.rb
effective_bootstrap-0.3.22 app/models/effective/form_logic.rb
effective_bootstrap-0.3.21 app/models/effective/form_logic.rb
effective_bootstrap-0.3.20 app/models/effective/form_logic.rb
effective_bootstrap-0.3.19 app/models/effective/form_logic.rb