Sha256: e6b64e7f33c61172e2543b35a6a457a4bc76696b8bf2246e90c63beef8a61359

Contents?: true

Size: 1.46 KB

Versions: 6

Compression:

Stored size: 1.46 KB

Contents

module Formtastic
  module Inputs
    module Base
      module Html
        
        # Defines how the instance of an input should be rendered to a HTML string.
        #
        # @abstract Implement this method in your input class to describe how the input should render itself.
        #
        # @example A basic label and text field input inside a standard wrapping might look like this:
        #     def to_html
        #       input_wrapping do
        #         label_html <<
        #         builder.text_field(method, input_html_options)
        #       end
        #     end
        def to_html
          raise NotImplementedError
        end
        
        def input_html_options
          { 
            :id => dom_id,
            :required => required_attribute?,
            :autofocus => autofocus?
          }.merge(options[:input_html] || {})
        end
        
        def dom_id
          [
            builder.dom_id_namespace,
            sanitized_object_name,
            dom_index,
            association_primary_key || sanitized_method_name
          ].reject { |x| x.blank? }.join('_')
        end
        
        def dom_index
          if builder.options.has_key?(:index)
            builder.options[:index]
          elsif !builder.auto_index.blank?
            # TODO there's no coverage for this case, not sure how to create a scenario for it
            builder.auto_index
          else
            ""
          end
        end

      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
formtastic-3.1.3 lib/formtastic/inputs/base/html.rb
formtastic-3.1.2 lib/formtastic/inputs/base/html.rb
formtastic-3.1.1 lib/formtastic/inputs/base/html.rb
formtastic-3.1.0 lib/formtastic/inputs/base/html.rb
formtastic-3.1.0.rc2 lib/formtastic/inputs/base/html.rb
formtastic-3.1.0.rc1 lib/formtastic/inputs/base/html.rb