[RUBY] Lorsque vous souhaitez modifier le libellé à afficher lors de la création d'une zone de sélection à partir d'énumération

Je ne pense pas que ce soit un cas rare, mais lors de la création d'une zone de sélection à partir d'énumération, notez comment modifier le libellé. Comme prémisse, «énumérer» et «reformer» sont utilisés pour la gemme.

product_form.rb


extend Enumerize

enumerize :fluit, in: {
  apple:      1,
  orange:     2,
  peach:      3,
  strawberry: 4,
  cherry:     5,
}, predicates: { prefix: true }

property :fluit

ja.yml


product:
  fluit:
    apple:pomme
    orange:Orange
    peach:Les pêches
    strawberry:fraise
    cherry:Cerise

Si vous l'écrivez normalement, c'est très bien.

new.slim


= f.select :fluit, f.object.class.fluit.options, {prompt: 'Sélectionnez un fruit'}

Cependant, supposons qu'on lui dise: «Je veux mettre les mots« (en vente spéciale) »pour« pommes »et« cerises »». Cela dit, je ne veux pas changer ja.yml. Ecrire un par un sans utiliser f.object.class.fluit.options est également peu maintenable.

Par conséquent, j'ai créé une méthode qui transforme le tableau généré par f.object.class.fluit.options avec une carte et ajoute le libellé et ne retourne que lorsqu'il s'agit d'une valeur spécifique.

product_form.rb


def fruit_select_display
  self.class.fluit.options.map do |key, value|
    if value == 'apple' || value == 'cherry'
      [key + '(Pendant la vente spéciale)', value]
    else
      [key, value]
    end
  end
end

new.slim


= f.select :fluit, f.object.fruit_select_display, {prompt: 'Sélectionnez un fruit'}

Avec cela, j'ai pu l'utiliser une fois.

Recommended Posts

Lorsque vous souhaitez modifier le libellé à afficher lors de la création d'une zone de sélection à partir d'énumération
Si vous souhaitez modifier l'environnement de développement Java d'Eclipse
Un mémo lorsque vous souhaitez effacer la partie horaire de l'agenda
Lorsque vous souhaitez utiliser la méthode à l'extérieur
Comment créer une route directement à partir de l'URL que vous souhaitez spécifier + α
[rails] Option After utile lorsque vous souhaitez modifier l'ordre des colonnes DB
Comment créer un formulaire pour sélectionner une date dans le calendrier
Je souhaite créer un formulaire pour sélectionner la catégorie [Rails]
Je veux donner un nom de classe à l'attribut select
[Enum_help] Utilisez enum_help pour créer une boîte de sélection affichée en japonais!
[Swift] Lorsque vous voulez savoir si le nombre de caractères dans String correspond à un certain nombre ...
Une collection de modèles dont vous voulez être conscient pour ne pas compliquer le code
Un mémorandum lorsque vous souhaitez voir les données acquises par Jena & SPARQL pour chaque variable.
Un exemple d'astuce lorsque vous souhaitez diviser la valeur de la définition en fonction de l'environnement mais ne voulez pas en être conscient
Lorsque vous souhaitez ajouter une colonne de type chaîne avec une longueur limitée avec la commande `rails generate migration`
La première chose à faire lorsque vous voulez être satisfait d'Heroku sur GitHub avec Eclipse sur Java
Que faire si l'opération non autorisée s'affiche lors de l'exécution d'une commande dans le terminal
Vous ne pouvez pas changer la version de facette du projet d'un module Web dynamique à x.x. Comment faire avec
Lorsque vous souhaitez que Rails désactive une session pour un contrôleur spécifique
N'oubliez pas de relâcher lorsque vous récupérez l'objet de S3!
Je veux que vous utilisiez Enum # name () pour la clé de SharedPreference
Que faire si vous ne pouvez pas activer la boîte de sélection créée par bootstrap-select
Si vous utilisez Android Room et que vous souhaitez modifier la définition de colonne
Apprenez à créer un serveur WEB Introduction au développement d'applications WEB à partir des bases
[Rails] Comment écrire lors de la création d'une sous-requête
Une note quand vous voulez Tuple en Java
[Ruby] Lorsque vous souhaitez remplacer plusieurs caractères
[Active Admin] Je souhaite spécifier l'étendue de la collection à afficher dans select_box
Un avertissement s'affiche lorsque vous essayez d'utiliser un entier énorme avec les variables spéciales $ 1, $ 2, $ 3 ...