J'ai une forme distante pour mettre à jour un modèle "point". C'est une forme assez ordinaire avec un bouton d'envoi.
Cependant, je voudrais également inclure un bouton "Supprimer" à côté du bouton "Mettre à jour". P>
Malheureusement, il y a un problème avec cela. Lorsque je clique sur le bouton 'Mettre à jour', il finit par supprimer la saisie - le lien Supprimer semble détourner le formulaire de mise à jour. P>
Edit: Je pense que je sais pourquoi le bouton de mise à jour est en train de supprimer. Lorsque j'ajoute le lien Supprimer au formulaire, il ajoute cette entrée: p> quel que soit le bouton, je appelle ce paramètre "_method" est en cours de ramassage! P> < P> Maintenant, je sais que je peux simplement positionner le bouton Supprimer avec l'élément de formulaire, mais dans ce cas, je ne suis pas autorisé à. p> Je suppose que le bouton Supprimer pourrait simplement être un autre bouton de soumission de la mise à jour, mais avec un paramètre supplémentaire: supprimer_techis. P> Cependant, quelque chose à ce sujet ne se sent pas bien. Des idées? P> p>
7 Réponses :
Vous pouvez le faire:
<%= button_to 'Delete', point_path(point), :method => 'delete', :confirm => 'Are you sure?' %>
Bonjour Mischa, c'est ce que j'ai essayé mais ce qui se passe est que le lien Supprimer semble "détourner" le formulaire de mise à jour - donc lorsque je clique sur le bouton "Mise à jour", il finit par supprimer! Désolé aurait dû expliquer le problème mieux.
Il n'y a aucun moyen de mettre le bouton Supprimer en dehors du formulaire?
J'ai une situation inconfortable où je ne peux pas. Pour style, j'ai besoin d'avoir le bouton dans un div (qui doit résider à l'intérieur du formulaire). Cependant, je ne peux pas mettre la forme à l'intérieur de ladite div non plus.
HM, dans ce cas, vous pouvez essayer une solution de contournement où le bouton Supprimer (qui est en fait un "formulaire de suppression" avec seulement un bouton et des champs masqués) est en dehors du formulaire et non visible et a un bouton à l'intérieur du formulaire qui soumet la cachée " Supprimer la forme "via JavaScript. Pas jolie, mais peut-être ça marche.
Oui qui fonctionnerait. J'ai réalisé que ce que j'ai fini avec une forme avec 2 boutons Soumettre. Donc, il y a une chose similaire à laquelle je pouvais faire où le bouton "Supprimer" ajoute l'élément:
Vous feriez un lien_to 'del', une variable: confirmer => 'Êtes-vous sûr?',: Méthode =>: Supprimer P>
la: méthode =>: Supprimer appellera la partie détruire de votre contrôleur. p>
Cela entraînera le problème que cet article essaie de résoudre. Voir une autre des questions d'explication: Stackoverflow.com/a/5991349/387310
dans Rails 3 La façon recommandée de soumettre des formulaires à l'aide d'Ajax consiste à utiliser alors quand le document est prêt / chargé, vous ajoutez un auditeur de clic sur chacun des boutons et agissez en conséquence: P> form_for code> en combinaison avec
ujs code> plutôt que
à distance_form_for code>. S'il vous plaît voir cette railscasts épisode pour plus d'informations.
$('#id_of_delete_button').click(function() {
// serialize the form and submit it to the delete action
});
$('#id_of_update_button').click(function() {
// serialize the form and submit it to the update action
});
En fait, je suis passé à utiliser Form_for: Remote => True est-ce toujours obtrissé?
Form_for: Remote => TRUE CODE> génère des JS non obstrissant, mais je ne suis pas sûr que sans JS personnalisé, il peut gérer plusieurs boutons de la même forme.
Je voulais dire qu'il génère de manière discrète.
Fondamentalement, la seule différence entre le «formulaire de mise à jour» et un «formulaire de suppression» est la présence de
Vraiment ancienne question, mais la voie à suivre sans le piratage JS ci-dessus est d'utiliser Soumettre_to code> pour générer le bouton Supprimer. Cela générera un nouveau formulaire HTML sur la page avec le _method = "Supprimer".
Une autre solution de contournement curieuse qui ne nécessite pas de JavaScript, consiste à mettre le formulaire de suppression en dehors du formulaire de mise à jour, mais laissez une <étiquette
Qui sent un certain génie maléfique! Solution intelligente à un ancien problème - je pense que je vais essayer celui-ci.
Une note à ajouter à cette solution: le bouton de formulaire réel Les points d'étiquette doivent ne pas être défini pour afficher: Aucun. La solution ne fonctionne pas dans certaines versions de IE si le bouton n'est pas rendu. Une alternative de travail consiste à positionner le bouton réel loin de la gauche de la page.
= f.button :submit, class: "btn-primary" = link_to "Delete", f.object, class: 'btn btn-default', data: {method: 'DELETE'} Delete link is styled with Bootstrap to look like a button. jquery-ujs hijacks clicks on links with data-method attribute and sends them with custom HTTP method.
Je recommanderais d'utiliser un lien plutôt que d'un bouton et de la style comme un bouton:
link_to("Remove", resource_url, method: :delete, class: "delete_button")
C'est la meilleure façon de le faire.
Mais les rails ne créent pas de forme pour cela car la méthode est supprimée? Parce que cela générerait une forme à l'intérieur d'une forme, ce qui n'est pas valide
@Arnoldroa. Utilisation de link_to code> avec
Méthode:: Supprimer code> produit un lien qui ressemble à:
supprime code>