nuno :
Bonjour, quitte à faire du RESTful je me dis que je pourrais franciser
les actions - Bonne idée ou pas ?
T’as plusieurs choix :
1/ Tu veux des URLs en français et ce n’est pas gênant si les actions
de ton contrôleur sont éventuellement toujours en anglais.
Donc t’as une ressource, on va dire maison. Dans routes.rb, t’as
mis map.resources :maisons
Bon, ben on a déjà fait la moitié du boulot.
Si on regarde les requêtes HTTP qu’on obtient on a :
index: GET /maisons
show: GET /maisons/1
new: GET /maisons/new
create: POST /maisons
edit: GET /maisons/2;edit
update: PUT /maisons/3
destroy: DELETE /maisons/1
Tout va bien sauf /maisons/new et /maisons/2;edit
Pour le deuxième, on voudrait bien GET /maisons/2;modifier
ça peut s’arranger :
map.resources :maisons, :member => { :modifier => :get }
ça correspondra à l’action modifier, on aura les url helpers
modifier_maison_{path,url}
L’action modifier soit appellera l’action edit (attention au double
render, à voir si ça marche), soit se débrouille comme un grand,
largement inspiré par le code de l’action edit.
De même si on a d’autres opérations sur les maisons ou sur
une maison en particulier, ben on les définit en français.
:member => { :telephoner => :get }
-> GET /maisons/4;telephoner
-> action telephoner (E.T. est un de nos utilisateurs
:collection => { :cambrioler => :get }
-> GET /maisons;cambrioler
-> action cambrioler (c’est le premier exemple qui m’est venu Ã
l’esprit !)
Il ne reste plus que GET /maisons/new. On veut GET /maisons/nouveau
Honnêtement, pas testé, mais en rajoutant une route spécifique
(éventuellement
nommée), ça doit marcher. Et on définit nouveau dans MaisonsController.
Remarque : t’auras toujours /maisons/new, c’est gênant ou pas,
placer une route qui intercepte cette url avant le map.resources peut
marcher, Ã tester.
2/ Tu veux des URLs en français et tu tiens absolument à ce que
les actions de ton contrôleur soient en français
Alors là , à ta place, je ferais un plugin similaire à simply_restful :
simplement_restafarien (simplement_restien ? simplement_restal ?
simplement_restique ? restement_votre ?)
qui définit la méthode #ressources dans Mapper pour pouvoir écrire
dans routes.rb :
map.ressources :maisons # 3 s et non 2 s !
Tu reprends le code de action_controller/resources.rb et ça revient,
grosso
modo, Ã transformer les new en nouveau, edit en modifier, etc.
(classe Ressource, module Ressource)
Tu auras donc le nom des url helpers et des actions que tu souhaites.
Tu crées tes conventions.
Il restera par la suite, à faire une version adaptée du générateur
scaffold_resource (echaffaudage_ressource ?), qui suit tes
conventions françaises.
Bien sûr, le jour où tu voudras utiliser simply_helpful, ça marchera
pas, car il suit les conventions “normales” et non tes conventions
françaises. Il suffira de faire un plugin version française
(simplement_aimable ?), il y a 3 fois rien à changer par rapport
à simply_helpful.
-- Jean-François.