Le 15 juin 2008 18:42, Alfref Bouton a écrit :
> Ha oui ok
> C'est ce que je me disais aussi, mais je comprenais pas
> comment il fait pour savoir si c'est pour la methode create,
> alors que l'ont pas encore rempli le formulaire...
Le client web n'a pas besoin de le savoir, on fait du REST,
à partir du moment où il fait une requête POST /products
pour un nouveau produit, ça roule.
Ensuite, quand Rails voit une requête POST /products,
il sait que c'est ProductsController#create qui va traiter
la requête, car tu as spécifié map.resources :products
dans config/routes.rb et que tu suis les conventions de
Rails concernant la manière dont REST est traité par Rails.
rake routes te montre que tu as une route :
POST /products {:controller=>"products", :action=>"create" }
Et donc par convention, c'est l'action create qui s'en charge.
Alors par convention, l'action aurait très bien pu s'appeler
van_nistelrooy_enrhume_la_defense_francaise
Il aurait fallu définir la route :
POST /products {:controller=>"products",
:action=>"van_nistelrooy_enrhume_la_defense_francaise" }
Pour PUT /products/42, c'est pareil, ç'aurait pu être
la route :
PUT /products/:id {:controller=>"products",
:action=>"benzema_n_est_pas_rentre_sur_le_terrain" }
mais la convention choisie, va savoir pourquoi, est la route :
PUT /products/:id {:controller=>"products", :action=>"update" }
> Mais je viens de comprendre que c'est grace a l'instanciation dans la
> methode new qui contient un objet vide :)
La notion d'objet vide n'a pas grand sens, sauf si tu définis #empty?
sur ton objet ou si tu utilises des objets conteneurs comme
des instances de Hash, Array, Set...
#new_record? indique si l'objet est neuf ou s'il a déjà été sauvé dans
la base de données, ce n'est pas la même chose.
-- Jean-François.
--
http://twitter.com/underflow_
--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse [EMAIL PROTECTED]
-~----------~----~----~----~------~----~------~--~---