Sha256: c335bb403b8a2593c4ee307daf1b55d02f05a988c1a1121580189768daf7d8fb

Contents?: true

Size: 863 Bytes

Versions: 8

Compression:

Stored size: 863 Bytes

Contents

module ClassyEnum
  class SemanticFormBuilder < Formtastic::SemanticFormBuilder # :nodoc: all
    def enum_select_input(method, options)
      raise Error.invalid_classy_enum_object(method) unless object.respond_to? "#{method}_options"

      enum_options = object.send("#{method}_options")
      enum_class = enum_options[:enum].to_s.classify.constantize

      options[:collection] = enum_class.select_options
      options[:selected] = object.send(method).to_s
      options[:include_blank] = enum_options[:allow_blank]

      select_input(method, options)
    end
  end

  module Error # :nodoc: all
    def self.invalid_classy_enum_object(method)
      raise "#{method} is not a ClassyEnum object. Make sure you've added 'classy_enum_attr :#{method}' to your model"
    end
  end
end

Formtastic::SemanticFormHelper.builder = ClassyEnum::SemanticFormBuilder

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
classy_enum-1.4.0 lib/classy_enum/semantic_form_builder.rb
classy_enum-1.3.2 lib/classy_enum/semantic_form_builder.rb
classy_enum-1.3.1 lib/classy_enum/semantic_form_builder.rb
classy_enum-1.3.0 lib/classy_enum/semantic_form_builder.rb
classy_enum-1.2.0 lib/classy_enum/semantic_form_builder.rb
classy_enum-1.1.0 lib/classy_enum/semantic_form_builder.rb
classy_enum-1.0.0 lib/classy_enum/semantic_form_builder.rb
classy_enum-0.9.1 lib/classy_enum/semantic_form_builder.rb