Dans les Rails, comment gérer plusieurs coché les cases à cocher, est divisée sur la , ou?
Curieux de savoir ce que les " rails de chemin de gérer la situation quand un internaute, de cocher plusieurs cases (avec la même valeur de nom), et il obtient posté vers le contrôleur.
Comment voulez-vous vérifier si plusieurs articles ont été sélectionnés, puis découpé sur les valeurs d'ID etc.
Vous devez vous connecter pour publier un commentaire.
La façon la plus simple de le faire est de fixer ces cases à cocher pour devenir un tableau.
HTML:
Contrôleur:
(Bien sûr, vous seriez probablement à l'aide de
form_for
basée sur des assistants dans la vue, et par conséquent la masse-affectation de la balise Id. C'est juste le plus générique exemple.)tag_ids[]
sont présentés dans la requête HTTP, alors que les Rails ne pas penser mettretag_ids
dansparams
. Vous aurez à rendre compte de vous-même, par exemple,params[:tag_ids] ||= []
f.check_box :tag_ids, {multiple: true}, 1, nil
. Lenil
signifie "sans cachés 0 entrée". Ce genre de chose est mal documentée.[1, 2, 3]
, la case est décochée, mais, comme dans l'exemple?:multiple => true
travaille dans 3.2.11? Je n'arrive pas à obtenir[]
à la fin dename
, de sorte que les valeurs n'obtenez pas présenté comme un tableau à tous.:tag_ids
comme un champ, mais au lieu de la:tag_ids
étaient pour remplir une table de jointure (utilisateur de sélectionner les balises qu'ils souhaitent s'associer à un autre modèle, ce qui est l'objet le formulaire est basé sur). En vertu de ce scénariof.check_box :tag_ids
avecmultiple: true
ne fonctionnera pas, mais cette réponse!Est la bonne réponse:
Voici la raison, il est un "multiple: true' option qui permet à votre entrée pour être placées dans un tableau. Si il n'y a pas un multiple: vrai cette option ne sera pas autorisé.
nil
à la fin de cette pour?En plus de Chuck Callebs réponse, j'ai réalisé qu'avec l'envoi d'une chaîne vide à la place de
nil
oufalse
comme non valeur, Rails de comprendre pour enlever les id correspondante sur une action de mise à jour:<%= f.check_box :tag_ids, {multiple: true}, tag.id, '' %>
Voici un exemple de vue et le contrôleur pour exemple où plusieurs nettoyants peuvent être dans plusieurs villes.
Et contrôleur de
Vous pouvez trouver tutoriel complet sur "les rails de façon" de faire ce https://kolosek.com/rails-join-table/
Si vous souhaitez utiliser un
checked
param vous avez à écrire ceci :Et non pas de ce :
Il m'a fallu un certain temps à comprendre, j'espère que ça aidera quelqu'un.
'
contre doubles quotes """ permet de faire une différence ici?