Sha256: b4666a3ce925eb2ec932bed6bba7980b6238fa7ddb1c9685387a409d32cf0105

Contents?: true

Size: 1.84 KB

Versions: 5

Compression:

Stored size: 1.84 KB

Contents

module KonoUtils

  ##
  # Racchiudo helpers per gestire gli enum
  module ApplicationEnumHelper

    ##
    # Genera l'hash da passare come collection alle selectbox, esegue anche la traduzione con locale
    #
    #   <%= f.input :usage, :as => :select,
    #                :collection => enum_collection(Logo, :usage), :input_html => {:include_blank => true} %>
    #
    # @param [ActiveRecord] model -> ActiveRecord model contenente l'enum
    # @param [Symbol] attribute   -> Symbol che identifica l'attributo dell'enum
    # @param [nil,String] variant -> se c'è la variante questa viene inserite _#{variant} dopo il nome del valore
    # @return [Hash]
    def enum_collection(model, attribute, variant=nil)

      model.send(attribute.to_s.pluralize(2).to_sym).collect {|key, val|
        [enum_translation(model, attribute, key, variant), key]
      }.to_h
    end


    ##
    # Si occupa di tradurre un determinato valore di un enum
    #
    # Le traduzioni dentro al locale devono essere fatte in questo modo:
    # it:
    #   activerecord:
    #     attributes:
    #       estimate_before/value:
    #         na: NA
    #         very_insufficient: 1
    #         insufficient: 2
    #         sufficient: 3
    #         excellent: 4
    # dove in questo caso  estimate_before è il modello e value è il nome del campo enum
    #
    # @param model [ActiveRecord::Base]  class contenente l'enum
    # @param attribute [Symbol]  che identifica l'attributo dell'enum
    # @param variant [nil,String]  se c'è la variante questa viene inserite _#{variant} dopo il nome del valore
    # @return [String]
    # @param value [Object] valore
    def enum_translation(model, attribute, value, variant=nil)
      return '' if value.nil?
      variant = "_#{variant}" unless variant.nil?
      model.human_attribute_name("#{attribute}.#{value}#{variant}")
    end


  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
kono_utils-1.1.4 lib/kono_utils/application_enum_helper.rb
kono_utils-1.1.3 lib/kono_utils/application_enum_helper.rb
kono_utils-1.1.2 lib/kono_utils/application_enum_helper.rb
kono_utils-1.1.1 lib/kono_utils/application_enum_helper.rb
kono_utils-1.1.0 lib/kono_utils/application_enum_helper.rb