J'ai des attributs imbriqués dans mon show.erb et je crée un attribut imbriqué blanc et montrez une grille d'articles avec le blanc en bas comme. Je veux un lien_to ' Détruire 'travailler mais je reçois méthode non définie' pluriel ' code> lorsque j'ajoute ceci à la grille p>
3 Réponses :
La variable que vous utilisez Est-ce que cela va être une liste de formulaires de réponse? Un pour chaque réponse? Si tel est le cas, vous voudrez peut-être vous en protéger au lieu d'utiliser simplement Espérons que cela vous aide à obtenir sur la bonne voie. P> l code> n'est pas correcte. Lorsque vous cédez à partir d'un champs_for code> Block, l'objet Bloquer est une instance de FormBuilder code> pas une instance de l'objet lui-même. Quelle URL voulez-vous que le lien indique? Est-ce réponses # détruire code>? Qu'est-ce que vous souhaitez envoyer à cette action pour identifier quoi détruire? Un link_to code> n'est pas un élément de formulaire. C'est juste un assistant pour une balise d'ancrage. Vous avez besoin d'une URL, pas d'un constructeur de formulaire pour construire ce lien. P>
champs_for code>. P>
Oui, je suis un idiot pour ne pas passer le modèle au lieu du constructeur de formulaire
Pourquoi voulez-vous utiliser un lien? Vous pouvez également utiliser la fonctionnalité Détruire dans les attributs imbriqués. P>
Tout ce que vous avez à faire est: p>
: allait_destroy => true code> dans votre accepte_nedes_attributes code> Définition li>
- Ajouter
: _ allait_destroy code> aux params forts de votre contrôleur li>
- Ajouter
<% = l.check_box '_Destroy'%> code> à votre modèle LI>
ol>
De cette façon, il supprime tous les enregistrements imbriqués avec la case à cocher vérifiée lors de la sauvegarde de l'enregistrement. P>
Pour que cela fonctionne, vous devez également ajouter : _ détruire code> à votre param.require () code> dans le contrôleur pour que cela fonctionne. Ajoutez-le dans les attributs acceptés pour le modèle associé dont vous avez besoin pour
Pour ceux qui trouvent cela à partir de Google, tandis que techniquement em> une case à cocher Supprimer pourrait être la bonne voie, je pense que c'est déroutant - le seul bénéfice est qu'il nécessite deux clics pour supprimer (sélectionnez la case et frappez mettre à jour). Il est peut-être préférable de simplement s'assurer que la suppression est claire ce qui se passe et peut éventuellement ajouter un moyen simple de le récupérer. Ce qui suit consiste à envoyer la mise à jour sur le serveur comme Ajax, pour gérer la mise à jour de la page dans un rappel ou js Voir le fichier. Supprimer la télécommande: true et il fonctionnera comme un lien régulier. P>
Oui, cela fonctionne bien sur une relation has_many. De plus, pour obtenir une boîte de confirmation, vous pouvez ajouter , données: {confirmer: "Tu es sûr?" } code> juste après Méthode :: Mettez CODE> La seule chose que j'ai remarquée (au moins dans mon cas) était que l'élément a été supprimé mais la page n'a pas rechargé automatiquement.
Merci pour la confirmation sur HAS_MANY (aucune idée de la raison pour laquelle cela ne fonctionnerait pas). Ajout également quelques notes de votre commentaire sur la confirmation, et si vous supprimez la télécommande: True, il devrait fonctionner comme un lien régulier et rafraîchir la page - sinon, vous devez vous gérer vous-même.
Je suis d'accord, l'UX est vraiment bizarre avec une case à cocher Supprimer