abir84
April 11, 2008, 5:22pm
1
Bonjour,
j’aid es magasin ou il y a des vendeurs senior qui peuevent vendre des
articles donnés.
magasin has_many vendeur_seniors et vendeur_senior has_many articles
j’ai la forme suivante dans route.rb :
map.resources :magasins do |magasin|
magasin.resources :vendeur_seniors do |vendeur_senior|
vendeur_senior.resources :articles
end
end
Je veux afficher ou editer les articles relatifs à un vendeur donné dans
un magasin.
c’est a dire je veux avoir une URL comme :
localhost:3000/magasins/1/vendeur_seniors/1/articles
comment je peux ecrire ça??
redirect_to magasin_vendeur_senior_articles_path(:magasin_id => 2,
:vendeur_senior_id => @vendeur.id ) ne semble pas marcher!!!
Merci
abir84
April 11, 2008, 5:32pm
2
map.resources :magasins do |magasin|
magasin.resources :vendeur_seniors do |vendeur_senior|
vendeur_senior.resources :articles
end
end
IMHO Imbriquer à plus de deux niveaux c’est s’attirer des ennuis (perso
mon
cerveau cale devant la combinatoire potentielle si on va plus loin que 2
Comment s’en tire en restant à 2 niveaux quelle que soit la profondeur
de la
hiérarchie ?
En passant toujours l’id du niveau du dessus.
Ca donne au niveau de routes :
map.resources :magasins do |magasin|
magasin.resources :vendeur_seniors
magasin.resources :articles
end
et pour le path :
magasin_articles_path( :magasin_id => @magasin , vendeur_senior_id =>
@vendeur_senior ) # Oui cette syntaxe marche
Je fais ça intensivement dans une appli complexe (ou la combinatoire
serait
démentielle avec un nesting > 2) et ça marche d’enfer
Hope it helps.
Philippe.
–
IciMarché fédère l’e-commerce de proximité
http://icimarche.fr
abir84
April 11, 2008, 5:50pm
3
philippe lachaise wrote:
…
map.resources :magasins do |magasin|
magasin.resources :vendeur_seniors
magasin.resources :articles
end
et pour le path :
magasin_articles_path( :magasin_id => @magasin , vendeur_senior_id =>
@vendeur_senior ) # Oui cette syntaxe marche
Je fais ça intensivement dans une appli complexe (ou la combinatoire
serait
démentielle avec un nesting > 2) et ça marche d’enfer
Hope it helps.
Philippe.
–
IciMarché fédère l’e-commerce de proximité
http://icimarche.fr
Merci pour ta réponse rapide
ça marche mais y a pas une façon pour éliminer le vendeur_senior_id?=1
de l’url??
çad j’obtiens
http://localhost:3001/magasins/8/vendeur_senior/1/articles
au lieu de
http://localhost:3001/magasins/8/articles?vendeur_senior_id=1
Merci
abir84
April 11, 2008, 5:54pm
4
ça marche mais y a pas une façon pour éliminer le vendeur_senior_id?=1
Ben, faut bien passer l’information d’une façon ou d’une autre.
Ce paramètre m’énerve aussi mais je crois qu’il faudra vivre avec
2008/4/11 Abir B. [email protected] :
http://localhost:3001/magasins/8/articles?vendeur_senior_id=1
Merci
–
Posted via http://www.ruby-forum.com/ .
–
IciMarché fédère l’e-commerce de proximité
http://icimarche.fr
abir84
April 12, 2008, 8:12pm
5
Perso, je ne vois aucun problème pour imbriquer de multiples
ressources.
Les urls sont jolies, sans paramètre en plus, et Rails le gère bien.
On peut même simplifier pour avoir des url helpers avec des noms
sympas.
Sinon, ce qu’il faut savoir : utiliser rake routes
A+
Pierre
On 11 avr, 17:57, “philippe lachaise” [email protected]
abir84
April 11, 2008, 5:57pm
6
J’avais pondu ça en rapport avec etet question il y a un moment :
http://blog.lachaise.org/?p=3
–
IciMarché fédère l’e-commerce de proximité
http://icimarche.fr
abir84
April 13, 2008, 1:02pm
7
Merci pour ce lien très intéressant.
Je suis d’accord en fait
abir84
April 13, 2008, 2:55am
8
2008/4/12 Pierre V. [email protected] :
Perso, je ne vois aucun problème pour imbriquer de multiples
ressources.
il y a une bonne explication sur ce site (même si la solution est un
peu datée): Buckblog: Nesting resources
"Rule of thumb: resources should never be nested more than 1 level
deep. A collection may need to be scoped by its parent, but a specific
member can always be accessed directly by an id, and shouldn’t need
scoping (…).
Think about it. If you only want to view a specific comment, you
shouldn’t have to specify the account, person, and note for the
comment in the URL."
abir84
April 14, 2008, 5:07pm
9
philippe lachaise wrote:
J’avais pondu ça en rapport avec etet question il y a un moment :
http://blog.lachaise.org/?p=3
–
IciMarché fédère l’e-commerce de proximité
http://icimarche.fr
Merci pour les réponses
Le pb c que qd j’ai essayé de mettre mon lien sous cette forme :
notes_url(1,2)
l’erreur suivante s’est affiché, mais sinon cette solution me convent
puisque j’ai juste c 2 niveaux!!
You have a nil object when you didn’t expect it!
The error occurred while evaluating nil.to_sym
Merci
abir84
April 14, 2008, 5:11pm
10
Sauf erreur il ya a un paramètre de trop sinon deux ?!
–
IciMarché fédère l’e-commerce de proximité
http://icimarche.fr
abir84
April 14, 2008, 6:05pm
12
/accounts/1/people/2/notes
Dans ce cas je verrais plutôt un truc du genre :
notes_account_person( @account , @person )
Sinon tu as regardé ce que donne “rake routes” ?
–
IciMarché fédère l’e-commerce de proximité
http://icimarche.fr
abir84
April 14, 2008, 6:30pm
13
philippe lachaise wrote:
/accounts/1/people/2/notes
Dans ce cas je verrais plutôt un truc du genre :
notes_account_person( @account , @person )
Sinon tu as regardé ce que donne “rake routes” ?
–
IciMarché fédère l’e-commerce de proximité
http://icimarche.fr
Merci pour ce rake routes, j’ai pu trouver ma faute grace à ça (j’avais
un s en plus!!!)
Merci
abir84
April 14, 2008, 8:10pm
14
Rake routes ça liste toutes tes routes si ma mémoire est bonne (en
utilisant tous les commentaires tels que GET /controller_name/id au
dessus de tes actions de controllers.).
T’est sûr ?!
J’ai plutôt l’impression qu’il va directement lire routes.rb
–
IciMarché fédère l’e-commerce de proximité
http://icimarche.fr
abir84
April 14, 2008, 9:36pm
15
J’ai plutôt l’impression qu’il va directement lire routes.rb
si tu mets un “map.resources :machin” dans ton routes.rb, il te sort
tout le détail :
(in /home/guillaume/src/essai)
machins GET /machins
{:controller=>“machins”, :action=>“index”}
formatted_machins GET /machins.:format
{:controller=>“machins”, :action=>“index”}
POST /machins
{:controller=>“machins”, :action=>“create”}
POST /machins.:format
{:controller=>“machins”, :action=>“create”}
new_machin GET /machins/new
{:controller=>“machins”, :action=>“new”}
formatted_new_machin GET /machins/new.:format
{:controller=>“machins”, :action=>“new”}
edit_machin GET /machins/:id/edit
{:controller=>“machins”, :action=>“edit”}
formatted_edit_machin GET /machins/:id/edit.:format
{:controller=>“machins”, :action=>“edit”}
machin GET /machins/:id
{:controller=>“machins”, :action=>“show”}
formatted_machin GET /machins/:id.:format
{:controller=>“machins”, :action=>“show”}
PUT /machins/:id
{:controller=>“machins”, :action=>“update”}
PUT /machins/:id.:format
{:controller=>“machins”, :action=>“update”}
DELETE /machins/:id
{:controller=>“machins”, :action=>“destroy”}
DELETE /machins/:id.:format
{:controller=>“machins”, :action=>“destroy”}
/:controller/:action/:id
/:controller/:action/:id.:format
gUI
abir84
April 14, 2008, 7:25pm
16
2008/4/14 philippe lachaise [email protected] :
/accounts/1/people/2/notes
Dans ce cas je verrais plutôt un truc du genre :
notes_account_person( @account , @person )
Oui tu as raison mais comme j’ai précisé la solution est un peu
datéecar le poste date de “February 05, 2007” et à l’époque il n’y avait
pas de “notes_account_person( @account , @person )”, enfin je pense.
Rake routes ça liste toutes tes routes si ma mémoire est bonne (en
utilisant tous les commentaires tels que GET /controller_name/id au
dessus de tes actions de controllers.).