2010-11-16 26 views
2

Ok, donc j'ai un motif bizarre ici que je n'arrive pas à comprendre.Rails Association STI et ressources imbriquées

J'ai un ensemble STI avec CallList comme modèle de base, et City & hérité État. Une ville appartient à un état (et un état a beaucoup de villes). Une campagne comporte de nombreuses listes d'appels. Je souhaite donc les afficher toutes. Je boucle sur campaign.call_lists et obtient parfois Cities, parfois States. Quand je veux un lien vers eux que je fais

link_to call_list.name, call_list 

qui fonctionne bien si j'ai ces routes: cependant,

resources :cities, :states 

Quand je villes imbriquer états, l'aide link_to ne peut pas comprendre la itinéraire approprié. Y a-t-il un moyen simple de le faire, ou est-ce que je vais devoir faire une construction d'aide manuelle?

+0

Quand vous dites « villes nid états à l'intérieur » vous voulez dire dans vos itinéraires , droite? Je suppose que les associations sont déjà configurées correctement? – Gareth

+0

Ouais, les associations fonctionnent très bien, et mes routes sont imbriquées. Donc, si ma call_list est un état, je peux juste link_to state, mais si c'est une ville, j'ai besoin de faire state_city_path (city) plutôt que simplement city_path (city). Je peux jeter une déclaration de cas dans la vue, mais c'est moche et je me demandais s'il y avait quelque chose dans les rails ou un plugin qui fonctionnerait à partir des routes? –

+0

vous devez vérifier le type de liste_appel puis utiliser la bonne route .. il ne peut pas être directement que l'itinéraire est imbriqué. –

Répondre

0

vous devez vérifier pour le genre de call_list puis utilisez route..it appropriée ne peut pas être directement itinéraire est niché ..

link_to call_list.name, call_list.is_a?(City) ? call_list : state_city_path(call_list)