translate_enum icon indicating copy to clipboard operation
translate_enum copied to clipboard

[Feature Request] Sorting by translated key

Open james-em opened this issue 3 years ago • 0 comments

Hi,

When building forms, doing this

= f.input :role, collection: MyModel.translated_roles

Method MyModel.translated_roles will return something like

[["Administrateur", "admin", "admin"], ["Utilisateur", "user", "user"], ["Master", "master", "master"]]

It would be great to have something like

 MyModel.translated_roles_sorted
=>
[["Administrateur", "admin", "admin"], ["Master", "master", "master"], ["Utilisateur", "user", "user"]]

In the mean time, we built an initializer

require "translate_enum"

module TranslateEnumSortable
  extend ActiveSupport::Concern

  included do
    def self.translate_enum(attribute, &block)
      super

      builder = TranslateEnum::Builder.new(self, attribute, &block)

      # @return [Array]
      # @example
      #   f.select_field :gender, f.object.class.translated_genders_sorted
      define_singleton_method("#{builder.method_name_plural}_sorted") do
        public_send(builder.method_name_plural).sort_by { |(translated, _)| translated }
      end
    end
  end
end

TranslateEnum.include TranslateEnumSortable

james-em avatar May 16 '22 13:05 james-em