Après avoir posé une question sur teratail, je l'ai résolue moi-même. Le site est si lourd (?) Je n'ai pas pu le publier, alors je vais d'abord l'écrire ici.
Je faisais une application sur un film et j'avais besoin de stocker des informations simples sur le film dans une base de données. Comme il était ennuyeux d'entrer depuis le terminal, j'ai créé un formulaire de publication dans l'application dans le but de l'améliorer pour les utilisateurs plus tard sans le publier dans la version 1. Les informations de film suivantes peuvent être enregistrées dans la base de données avec la nouvelle méthode.
--title
: Titre de l'œuvre
--directed
: nom du réalisateur
--histoire
: Synopsis
--service
: nom du service de livraison à partir duquel le synopsis est cité
--time
: temps de lecture
Je voulais sélectionner le nom du service de livraison parmi ceux-ci à partir des quatre cases à cocher et stocker le nom du service coché dans la base de données, mais l'article auquel je faisais référence était la case à cocher `. Puisque le contenu devait stocker l'élément et vérifier l'état dans un tableau, il était nécessaire «d'extraire uniquement la valeur vérifiée» afin de le réaliser.
Les cases à cocher sont placées à l'aide de la balise check_box
.
<div class="box form4">
<%= check_box "service", "PrimeVideo" %>PrimeVideo
<%= check_box "service", "Netflix" %>Netflix
<%= check_box "service", "Hulu" %>Hulu
<%= check_box "service", "U-NEXT" %>U-NEXT
</div>
Directement dans le contrôleur
service: params[:service]
Si vous écrivez, le hachage généré sera stocké dans la colonne service
de la base de données.
Si elle n'est pas cochée, la valeur sera «0», et si c'est le cas, «1» sera la valeur.
{"PrimeVideo"=>"0", "Netflix"=>"1", "Hulu"=>"0", "U-NEXT"=>"0"}
De là, je veux extraire et enregistrer uniquement le nom de service de l'élément coché (c'est-à-dire la clé dont la valeur est «1»)! Peut-être parce que je n'avais pas assez de connaissances de base en premier lieu, je ne savais pas comment le faire et je l'ai laissé seul.
def req
params[:service].each do | di1 , di2 |
if di2 == "1"
@movie = Movie.new(
title: params[:title],
directed: params[:directed],
story: params[:story],
service:di1,
time: params[:time]
)
@movie.save
end
end
end
J'ai détourné le code de Article auquel je faisais initialement référence.
--Recevoir la valeur avec params [: service]
et stocker le nom du service
et vérifier l'état (0 ou 1)
dans chacune des deux variables.
Suivez la procédure.
Si le nom du service n'est pas coché, la ** méthode save ne sera pas exécutée en premier lieu **, mais ... je n'ai pas le temps, alors maintenant je veux juste avancer ...
Quand je serai calme, j'essaierai de jeter les bases autour des parties qui peuvent être transformées en un code un peu plus poli, comme la méthode select
, la méthode keys
et la syntaxe SQL.
Nous tenons à exprimer notre sincère gratitude à tous les répondants qui nous en ont donné l'occasion.
Recommended Posts