Sha256: 3759191754aaa3b05e8d95976a51a555e0a87eec69267ee8bac570353e5e1e85
Contents?: true
Size: 1.79 KB
Versions: 2
Compression:
Stored size: 1.79 KB
Contents
module Para module Inputs class NestedManyInput < SimpleForm::Inputs::Base attr_reader :resource def input(wrapper_options = nil) input_html_options[:class] << "nested-many" orderable = options.fetch(:orderable, model.orderable?) add_button = options.fetch(:add_button, true) # Load existing resources resources = object.send(attribute_name) # Order them if the list should be orderable resources = resources.sort_by(&:position) if orderable locals = options.fetch(:locals, {}) template.render( partial: 'para/inputs/nested_many', locals: { form: @builder, model: model, attribute_name: attribute_name, orderable: orderable, add_button: add_button, dom_identifier: dom_identifier, resources: resources, nested_locals: locals, subclass: subclass, subclasses: subclasses, inset: inset? } ) end def parent_model @parent_model ||= @builder.object.class end def model @model ||= parent_model.reflect_on_association(attribute_name).klass end def dom_identifier @dom_identifier ||= begin name = attribute_name time = (Time.now.to_f * 1000).to_i random = (rand * 1000).to_i [name, time, random].join('-') end end def subclass @subclass ||= options.fetch(:subclass, subclasses.presence) end def subclasses options.fetch( :subclasses, (model.try(:descendants) || []).sort_by { |m| m.model_name.human } ) end def inset? options.fetch(:inset, false) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
para-0.7.1 | lib/para/inputs/nested_many_input.rb |
para-0.7.0 | lib/para/inputs/nested_many_input.rb |