2010-05-24 6 views
1

Lorsque je clique sur le lien de suppression que j'ai créé, il ne fait rien (même la partie flash [: notice]) dans le contrôleur. Est-ce que je n'appelle pas le .delete? partie correctement? La partie POST fonctionne comme je peux ajouter des conseils.Problème avec Delete Link?

Lien:

<%= link_to "Delete", :controller => "/admin", :action => "tips", :id => t.id, :method => :delete, :confirm => "Are you sure?" %> 

Controller Admin

def tips 
    @tips = Tip.all 
    if request.post? 
    tip = Tip.new(params[:geek_tips]) 
    if tip.save 
     flash[:notice] = "Saved!" 
     redirect_to :action => "tips" 
    else 
     flash[:notice] = "Error!" 
    end 
    elsif request.delete? 
    tip = Tip.find_by_id(params[:id]) 
    tip.delete! 
    flash[:notice] = "Delete Message" 
    redirect_to :action => "tips" 
    end 
end 

Répondre

3

des problèmes de conception à part, je pense que votre option :method est interprété comme une requête de param. Pouvez-vous voir "méthode" dans l'URL si vous passez votre souris sur le lien?

Si oui, essayez ...

<%= link_to "Delete", {:controller => "/admin", :action => "tips", :id => t.id}, :method => :delete, :confirm => "Are you sure?" %> 

Notez les accolades autour de la partie qui définit l'URL de la requête. En ce qui concerne la conception: Chaque fois que vous avez plusieurs actions dans une seule méthode de contrôleur, il y a probablement un problème de conception. Dans ce cas, au lieu d'utiliser une seule méthode de contrôleur d'administration pour faire plusieurs actions de conseils, je considérerais faire un contrôleur dédié tips_controller pour mapper à votre modèle Tip.

Si vous avez utilisé les routes RESTful, qui est, en config.rb vous définissez ...

map.resources :tips 

... alors vous pouvez utiliser la créer et détruire des méthodes dans votre tips_controller pour la création et la suppression de vos conseils respectivement.

+0

Votre idée semblerait créer tout un tas de contrôleurs pour chaque modèle qui a un CRUD. Qu'est-ce que le «problème de conception» auquel vous faites référence qui rend votre suggestion meilleure? – Kevin

+0

Oui, exactement. Je ne l'appellerais pas mon idée. C'est le modèle que Rails supporte. Il y a des exceptions, mais généralement vous voulez avoir un contrôleur et des vues qui correspondent à chacun de vos modèles. Tout d'abord, il s'agit de la convention Rails, ce qui vous facilitera la vie en ce qui concerne les routes et les URL. Les raisons de l'approche MVC en premier lieu sont nombreuses - traitant de la complexité (par exemple, plusieurs contrôleurs simples mieux qu'un géant), de la maintenabilité, de la lisibilité ... trop nombreux pour mettre dans ce commentaire, mais il y a beaucoup de littérature sur MVC. – Greg

+0

Les bretelles ont-elles permis de résoudre votre problème? – Greg