2009-08-28 13 views
2

J'ai un commentaire comme un modèle polymorphe.Routes polymorphes dans les rails - dans les vues

Il est attaché à Post, examen, etc.

J'ai aussi une action en CommentsController, appelé test.

J'ai configuré mes routes, donc test_post_comment_path fonctionne (pour appeler l'action test dans le CommentsController). Le problème est, dans ma vue partielle, je veux que cette route puisse changer, basé sur l'action courante, c.-à-d. il est test_post_comment_path lorsque sur un poste et test_review_comment_path lors d'un examen.

Répondre

-2

j'ai décidé d'utiliser seulement une instruction if dans la vue, sur la base si l'action en cours était présent, comme si @post ou si @review

+1

Regardez par-dessus les aides de chemin polymorphes. http://api.rubyonrails.org/classes/ActionController/PolymorphicRoutes.html – vise

1

Utilisez simplement deux chemins différents? Je veux dire: vous ne voulez pas mettre autant de logique dans les routes.

Si les routes essayent de faire quelque chose de plus que le routage, la première fois que quelque chose se passe mal, vous aurez de sérieux ennuis.

Dans votre vue partielle, la logique permettant de créer des liens spécifiques ou d'autres éléments de commentaires html doit être incluse dans une aide.

+0

Je veux que la logique change dans la vue elle-même - Je ne suis pas sûr comment – Elliot

0

Quelque chose comme ceci: (dans votre vue partielle)

@commentable.each |commentable| 
    test_#{commentable.class.to_s.downcase}_comment_path 
end 

si elle est « post » il générera « test_post_comment_path », si elle est revue, il va générer test_review_comment_path

5

La bonne façon de le faire est avec polymorphic_url ...

+0

génial, je cherchais juste pour ça =) –

Questions connexes