7
votes

Moteurs Rails: URL polymorphes à la liste des noms

J'ai un moteur rails, myengine , qui n'a pas d'espace de noms isolé. J'essaie d'utiliser les aides polymorphes pour générer des liens vers des ressources, conformément au docs .

Un itinéraire moteur: xxx

Exemple de sortie de Rake App: Itinéraires (N'oubliez pas que ceci est un moteur): xxx

si my_resource est une instance d'un modèle myResource Modèle avec ID 12345 , je m'attendais à: xxx

pour rendre: xxx

mais j'avais tort. Au lieu de cela, je reçois une exception: xxx

donc, polymorphic_url tente d'utiliser admin_my_engine_my_resource_path où il devrait vraiment utiliser quelque chose de plus comme my_engine.admin_my_resource_path (my_resource)

rails semble ajouter : admin le mauvais chemin autour ... ou je le fais mal ?


0 commentaires

3 Réponses :


0
votes

exécuter routes râte et obtenez le nom de la fonction d'aide de l'URL à partir de là. Vous pouvez partager les itinéraires râte ici aussi.


2 commentaires

J'ai besoin des aides sur les itinéraires polymorphes pour travailler. Appelant my_Engine.admin_my_resource (my_resource) fonctionne bien mais l'équivalent utilisant polymorphic_url n'est pas. Je vais modifier ma question pour être un peu plus claire.


Juste pour des éclaircissements. polymorphic_url ([: my_Engine,: admin, my_resource]) travail? Il suffit de symboliser le my_engine . Je ne peux pas tester cela dans ma machine en ce moment alors vous demandant :)



3
votes

Avez-vous essayé de le faire via une portée au lieu d'un espace de noms?

Voir cet article pour une meilleure explication. Rails Scoped Routing

Un bon exemple de ceci est le gem du congé.

bonne chance!


1 commentaires

Votre réponse m'a suscité de rechercher plus près de l'espace de noms et de la portée et j'ai fini par créer des échéances telles que le module Scope: "admin", comme suit: "admin" " pour le contourner. Merci!



0
votes

J'ai récemment rencontré ce problème dans les rails 5 et j'ai trouvé la solution générale suivante.

donné mon moteur appelé Yamscore, qui génère des aides d'URL habituels sous forme: P>

path = polymorphic_path([view.engine_prefix, my_resource])


0 commentaires