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]
-~----------~----~----~----~------~----~------~--~---

Répondre à