[RUBY] Rails enum Sélectionnez la préfecture par méthode déroulante

introduction

J'ai rendu possible l'acquisition d'informations cartographiques en coopération avec Google API avec une application développée personnellement.

Comme il est difficile de saisir manuellement toutes les adresses, je vais essayer de permettre de sélectionner la préfecture par méthode déroulante.

ruby:new.html.erb



<%= form_for @ride, method: :post do |f| %>
 <%= f.select :prefecture, ['Hokkaido', 'Préfecture d'Aomori', 'Akita', 'Préfecture d'Iwate'Ce qui suit est omis], { include_blank: 'Veuillez sélectionner' } %>
<% end %>

Si vous ignorez la lisibilité du code et l'implémentez, vous le saisissez simplement comme ceci,

Quand je suis entré dans les 47 préfectures du côté de la vue comme ça, j'ai pensé que c'était ** très disgracieux **, alors j'ai cherché une façon intelligente de le faire.

enum Il semble y avoir une énumération, qui vous permet de la décrire dans un modèle au lieu d'une vue,

Vous pouvez rendre le code du côté de la vue assez rafraîchissant!

python


class CreateRides < ActiveRecord::Migration[5.2]
  def change
    create_table :Rides do |t|
      t.integer :ride_area, null: false, default: 0
    end
end

Tout d'abord, créez une colonne avec un entier.

ride.rb


class Ride < ApplicationRecord
 enum ride_area:{
     "---":0,
Hokkaido:1,Préfecture d'Aomori:2,Préfecture d'Iwate:3,Préfecture de Miyagi:4,Akita:5,Préfecture de Yamagata:6,Préfecture de Fukushima:7,
Préfecture d'Ibaraki:8,Préfecture de Tochigi:9,Préfecture de Gunma:10,Saitama:11,Préfecture de Chiba:12,Tokyo:13,Préfecture de Kanagawa:14,
Préfecture de Niigata:15,Préfecture de Toyama:16,Préfecture d'Ishikawa:17,Préfecture de Fukui:18,Préfecture de Yamanashi:19,Préfecture de Nagano:20,
Préfecture de Gifu:21,Préfecture de Shizuoka:22,Préfecture d'Aichi:23,Préfecture de Mie:24,
Préfecture de Shiga:25,Kyoto:26,Préfecture d'Osaka:27,Préfecture de Hyogo:28,Préfecture de Nara:29,Préfecture de Wakayama:30,
Préfecture de Tottori:31,Préfecture de Shimane:32,Préfecture d'Okayama:33,Préfecture d'Hiroshima:34,Préfecture de Yamaguchi:35,
Préfecture de Tokushima:36,Préfecture de Kagawa:37,Préfecture d'Ehime:38,Préfecture de Kochi:39,
Préfecture de Fukuoka:40,Préfecture de Saga:41,Préfecture de Nagasaki:42,Préfecture de Kumamoto:43,Préfecture d'Oita:44,Préfecture de Miyazaki:45,Préfecture de Kagoshima:46,
Préfecture d'Okinawa:47
   }
end

Du côté modèle, écrivez la préfecture comme ceci.

La clé de hachage s'affiche dans la zone de sélection.

ruby:new.html.erb



<%= form_for @ride, method: :post do |f| %>
 <%= f.select :prefecture, Ride.ride_areas.keys, {} %>
<% end %>

Réécrivons le code écrit au début comme ceci.

En écrivant Ride.ride_areas.keys, {}, toutes les préfectures écrites dans le modèle seront traitées dans l'ordre, vous pouvez donc sélectionner la préfecture par méthode déroulante sur le navigateur!

c'est tout.

Recommended Posts

Rails enum Sélectionnez la préfecture par méthode déroulante
méthode des rails
[Java] Appel de méthode dynamique par réflexion du type enum (enum)
Méthode de délégué Rails
[Rails] conçoit une méthode d'aide
[Rails] conçoit une méthode d'introduction
[Enum] Utilisez des rails enum pour améliorer la lisibilité des données