web-dev-qa-db-fra.com

rails confirmer avant de supprimer

Voici mon Rails link_to

<%= link_to 'Delete',url_for(action: :delete,id: @user.id),data: {confirm: "Are you sure?"} %>

J'ai essayé la méthode ci-dessus mais elle est en train de supprimer directement sans aucun message d'alerte. Quel mal j'ai fait. Quelqu'un peut-il le corriger.

36
overflow

Essaye ça

<%= link_to 'Delete',url_for(action: :delete,id: @user.id),method: :delete, data: {confirm: "Are you sure?"} %>
54
userxyz

Réponse pour Rails 4.1.8 (la question n'inclut pas la version)

et ressource standard (également non spécifié)

  1. //= jquery_ujs Doit être inclus dans application.js (peut-être manquant)
  2. l'url est user_path(@user)
  3. spécifiez :method => :delete (manquant)
  4. confirmer le message dans :data (était bon)
  5. méthode destroy dans le contrôleur (pas supprimer)

= link_to t (: delete), user_path (@user),: method =>: delete,: class => "btn btn-danger",: data => {: confirm => t (: are_you_sure)}

L'URL dans la question semble créer un GET, plutôt qu'une méthode DELETE. Cela peut fonctionner si: la méthode a été spécifiée. à mon humble avis, il est regrettable qu'il n'y ait aucun assistant URL nommé distinct pour cela.

11
Torsten

Boîte de dialogue de confirmation Rails pour l'action de destruction:

    <%= link_to 'Show', article_path(article),{:class=>'btn btn-success show_article' }%>
    <%= link_to 'Edit', edit_article_path(article),{:class=>'btn btn-warning edit'} %>
    <%= link_to 'Destroy', '#', "data-toggle"=>"modal", "data-target" => "#delete-#{article.id}",:class=>'btn btn-danger' %>
    <div class="modal fade" id="delete-<%= article.id %>" role="dialog">
      <div class="modal-dialog">
        <div class="modal-content">
          <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal">Confirmation Box</button>
          </div>
          <div class="modal-body">
            <p>Are you sure to delete this article</p>
          </div>
          <div class="modal-footer">
            <div class="modal-footer">
              <%= link_to 'Delete', article_path(article), method: :delete, :class => 'btn btn-danger' %>
                <a href="#" data-dismiss="modal" class="btn btn-warning">Cancel</a>
            </div>
          </div>
        </div>
      </div>
   </div>
</td>
2
sivamani
  1. Je pense que vous devriez utiliser: option de méthode

    <%= link_to 'Delete',url_for(action: :delete,id: @user.id), method: :delete, confirm: "Are you sure?" %>

  2. Il est probablement préférable d'utiliser le bouton (et le formulaire) pour ce type d'action

1
Marek Takac
link_to('Delete', {controller: :controller_name, id: id, action: :action_name}, confirm: "Are you sure you want to delete this?", method: :delete)
1
LHH

Assurez-vous que vous disposez à la fois de la bibliothèque jQuery et du pilote jQuery pour Rails inclus. Le jquery-Rails gem prendra soin de ces deux dans les versions ultérieures de Rails, d'après ce que je sais.

De plus, pour de meilleures chances de compatibilité avec les futures versions du pilote jQuery, déplacez le :confirm option extérieure :data et laissez le jquery-Rails gem décide quoi en faire.

0
kristinalim

Vérifiez le lien suivant:

<%= link_to 'Delete',url_for(action: :delete,id: @user.id), confirm: "Are you sure?" %>
0
Ganesh Kunwar