2010-11-01 2 views
2

Je sais que c'est probablement incroyablement simple, je ne peux pas avoir l'air d'avoir la tête autour.La question du débutant: Mettez la mise à jour dans une vue Rails

Ainsi, dans une application d'échafaudage généré, je suis à la recherche d'avoir un lien/bouton show.html.erb qui changerait la status_id de l'entrée en cours/ligne à 3.

Je comprends comment faire GET, POST et DELETE, mettre Je ne reçois pas le droit de syntaxe pour émettre une commande PUT à la méthode update dans le contrôleur (link_to, button_to?)

Merci!

Répondre

3
<%= link_to "Update", update_object_path(object), :method => :put %> 

Contrôleur

def update 
    @obj = object.find(params[:id]) 
    @obj.status_id = 3 
    @obj.update_attributes 
    redirect_to :back 
end 
+0

Merci! Étant donné que d'autres boutons sur la même page mettront à jour status_id avec d'autres valeurs (1,2, etc.), comment procéder pour passer le status_id requis à la méthode de mise à jour? –

+2

changer la méthode du contrôleur pour définir '@obj.status_id = params [: status_id] 'et changer le chemin dans le lien vers' update_object_path (objet,: status_id => 1) '(changer le 1 pour être différent pour chaque bouton) – Jeremy

+0

Merci BenB/Jeremy! Cependant, j'obtiens 'la méthode undefined 'update_person_path'' (personne étant mon modèle). 'person_path' s'affiche correctement, mais tout le reste ne le fait pas (' destroy_person_path', 'update_person_path', etc.). Tout ce que j'ai dans routes.rb est 'resources: people' –

Questions connexes