37 votes

rails 3 - link_to to destroy ne fonctionne pas

J'essaie de créer un lien de destruction avec le contrôleur de mon utilisateur, j'utilise également un logiciel.

Voici mon code -

Vue

 <%= link_to 'Delete User?', child, :confirm => "Are you sure you want to delete #{child.full_name}?", :method => :delete, :class => "user-additional", :style => "font-size:12px;font-weight:normal;" %>
 

Manette

 def destroy
 if @user = User.find(params[:id])
  @user.destroy
  respond_to do |format| 
    format.html { redirect_to account_index_path } 
    format.xml { head :ok } 
  end
 end
end
 

Itinéraires

 devise_for :users 
resources :users, :except => [:new]
 

Le lien se traduit en localhost: 3000 / users / 10

Lorsque l'utilisateur clique dessus, les utilisateurs s'affichent au lieu de les supprimer.

Des idées ?

64voto

Omar Qureshi Points 5755

Les actions destructives doivent être effectuées sous forme de soumission de formulaire - http://www.w3.org/2001/tag/doc/whenToUseGet.html#checklist

utilisez button_to (en passant un :method => :delete ) à la place et appelez le bouton de manière appropriée.

27voto

JayX Points 769

En fait, j'ai eu exactement le même problème hier

Essaye ça:

 <%= button_to "delete", your_object, :method=>:delete, :class=>:destroy %>
 

Ça marche (du moins pour moi)

9voto

Florin Points 1212

Si vous utilisez jQuery au lieu de Prototype, il vous manque probablement un fichier javascript.

Vous pouvez trouver des détails sur la façon de l'ajouter à votre projet à partir de la page GitHub de jQuery-ujs ou de l' épisode 205 des Railscasts.

6voto

DanSingerman Points 17301

Au jugé, je pense que c'est parce que dans Rails 3, javascript discret est maintenant utilisé pour des fonctionnalités telles que la ce (2 Rails de sortie d'un tas de méchants javascript en ligne de votre code, Rails 3 met le code javascript dans un fichier externe, et utilise HTML5 data- attributs d'interagir avec cela.)

Pour résoudre ce problème, vous devez inclure <%= csrf_meta_tags %> dans votre en-tête de page de référence javascript externes. Il traite également de XSS questions.

Quelques détails ici: Supprimer le lien envoie "Get" au lieu de "Supprimer" dans Rails 3, vue

1voto

chech Points 664

Si vous utilisez jQuery, assurez-vous d'avoir quelque chose comme ceci:

 <script type="text/javascript">
  // this allows jquery to be called along with scriptaculous and YUI without any conflicts
  // the only difference is all jquery functions should be called with $j instead of $
  // e.g. $jQ('#div_id').stuff instead of $('#div_id').stuff
  var $jQ = jQuery.noConflict();
</script>
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X