Je ne comprends pas vraiment les avantages et les inconvénients de l'utilisation des requêtes "post" vs "get" vs "put", des actions de contrôleurs personnalisés et de l'utilisation de liens ou de formulaires /boutons. Disons que j'ai une simple liste de choses à faire avec des tâches, et un contrôleur de tâches, et je veux une action "complète" où je trouve une tâche spécifique dans la DB et mettre à jour son attribut status de "incomplete" à "Achevée."Rails 3, Actions personnalisées et méthodes de requête HTML
def complete
@task = Task.find(params[:id])
if @task.update_attributes(:status => "complete")
redirect_to tasks_url, :notice => "Completed!"
else
redirect_to tasks_url, :error => "Whoops."
end
end
Quelle est la meilleure façon pratique de définir cette voie, cette méthode demande HTML dois-je utiliser (post? Mis? Obtenir?), Et devrais-je utiliser un lien simple ou une forme? (Et notez: supposons que mon modèle de sécurité d'utilisateur est tout compris avec concevoir, et approprié avant les filtres, etc.)
Et surtout, comment articuler tout cela dans un fichier Rails 3 routes.rb?
Note, le code ci-dessous ne fonctionnait pas vraiment pour moi: si actuellement
#routes.rb
resources :tasks do
members do
post 'complete'
end
end
J'utilise ceci:
#routes.rb
match 'tasks/:id/complete', 'tasks#complete', :as => "complete_task"
#view
= link_to "Complete", complete_task_path(:id => @task.id)
Mais cela déclenche une requête get, et je me sens comme il devrait être un "put" ou un "post". Ou devrait-il être un lien du tout? Devrait-il être un formulaire avec des champs cachés?