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