2010-06-11 4 views
0

J'utilise Rails 2. J'ai des ressources imbriquées comme ceci: - university_categories - universités - études - professeurs - commentairesREST Rails 2 itinéraires imbriqués sans noms de ressources?

Je souhaite utiliser des itinéraires RESTful, mais je ne veux pas tout ce fouillis dans mon URL. Par exemple au lieu de: /universités /: university_id/studies /: study_id/professeurs /: professor_id Je veux: /professeurs /: university_id /: study_id /: professor_id (Je ne cartographie pas les professeurs séparément donc il ne devrait pas ' t être une confusion entre ceci et/professeurs /: professeur_id puisque cette route ne devrait pas exister). Encore une fois, je veux utiliser des ressources/routes RESTful ... Notez également que j'utilise des slugs à la place des ID. Les limaces pour les études ne sont PAS uniques, tandis que d'autres le sont. De plus, il n'y a pas de relations plusieurs-à-plusieurs (donc si je connais la limace d'un professeur, qui est unique, je sais aussi quelle étude et quelle université elle appartient, cependant je souhaite que cette information soit dans l'URI si possible pour le référencement, et il est également nécessaire lors de l'ajout d'un nouveau professeur). Je veux cependant utiliser l'imbrication peu profonde pour des URI «d'administrateur» comme éditer, détruire (notez le problème ici avec l'étude puisque c'est slug n'est pas unique, cependant) ...

Je voudrais également quelques conseils sur comment utiliser les url helpers pour que je n'ai pas trop de choses à réparer si je change les routes dans le futur ...

Merci.

Répondre

0

Il ne semble pas map.resources vous fournira cette fonctionnalité, mais vous pouvez utiliser quelque chose comme (non testé)

map.show_professor "/professors/:university_id/:study_id/:professor_id", :controller => "professors", :action => "show" 

et routes similaires pour les autres actions.

Il pourrait y avoir une meilleure solution, mais c'est la seule façon que je peux trouver cela pourrait fonctionner, car il semble map.resources suppose qu'il est sous forme de/ressources/(: resource_id)

Vous pouvez Utilisez REST de cette façon, il vous suffit de faire toutes les actions vous-même au lieu d'utiliser le raccourci.

À titre d'exemple d'une édition, vous pouvez simplement utiliser

map.edit_professor "/professors/:id/edit", :controller => "professors", :action => "edit" 
+0

C'est la façon dont j'avais mes routes fait avant, mais je voulais nettoyer un peu. Donc, je me demande s'il y a une façon plus propre de le faire, mais merci pour votre réponse! – mrbrdo

+0

Je pense que vous devez le faire manuellement pour le moment ou le mettre dans Rails lui-même. – alternative

Questions connexes