Rest :

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

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
:wink:

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 :slight_smile:

Hope it helps.

Philippe.


IciMarché fédère l’e-commerce de proximité
http://icimarche.fr

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 :slight_smile:

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

ç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 :slight_smile:

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

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]

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 ce lien très intéressant.
Je suis d’accord en fait :slight_smile:

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."

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

Sauf erreur il ya a un paramètre de trop sinon deux ?!


IciMarché fédère l’e-commerce de proximité
http://icimarche.fr

Abir B. wrote:

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
Dans le blog c’est écrit comme ça pour accéder Ã
/accounts/1/people/2/notes!?

/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

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

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

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

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.).