Problème de débutant RoR

Bonjour à tous,

Je vous expose mon problème: J’ai dans un controller “clients” une
méthode show qui contient une variable @client correspondant à l’id du
client choisi.
Cette méthode appelle un autre controller “sites” dans lequel je
voudrais utiliser la variable @client pour pouvoir lister les sites du
client choisi.

Je suppose que cela est possible mais je n’y parviens pas…

Quelqu’un pourrait il me mettre sur la voie?

Sébastien

Un controller qui appelle un autre controller ???
tu parle d’un redirect_to, si c’est le cas il faut que tu t’arrange pour
recréer cette variable dans le controller sites.
avec par example des routes :

map.resources :users, :has_many => :sites

donc des urls comme suit /users/1/sites

et donc dans le controller site tu retrouve params[:user_id] et donc
@user =
User.find(params[:user_id])

2009/4/29 Sebastien P. [email protected]

guillaume belleguic wrote:

Un controller qui appelle un autre controller ???
tu parle d’un redirect_to, si c’est le cas il faut que tu t’arrange pour
recréer cette variable dans le controller sites.
avec par example des routes :

map.resources :users, :has_many => :sites

donc des urls comme suit /users/1/sites

et donc dans le controller site tu retrouve params[:user_id] et donc
@user =
User.find(params[:user_id])

2009/4/29 Sebastien P. [email protected]

Oui, j’utilise un redirect_to(sites_url). j’ai rajouté la route
suivante:
“map.ressources :clients, has_many => :sites” dans mon routes.rb
puis: “@client = Client.find(params[:client_id])” dans la méthode
concernée de mon controller site mais lorsque cette méthode est appelée
je reçois l’erreur suivante: “Couldn’t find Client without an ID”

Autant pour moi, les url n’étaient pas bonnes…
J’ai donc bien une url du type /clients/numéro/sites mais je ne vois pas
comment ne sélectionner que les sites correspondant au client choisi.
Si quelqu’un avait l’adresse d’un tuto traitant de choses dans ce genre
ce ne serait pas de refus ^^

Ici :

les sources : Full Episode Source Code

Le 29 avr. 09 à 12:56, Sebastien P. a écrit :