2008-12-10 1 views
1

Je sais que c'est étrange. mais je ne peux pas trouver d'autres moyens de faire ce dont j'ai besoin. J'ai un contrôleur: rapport et une vue: rapport. J'ai aussi une vue qui sert de tableau de bord où je peux voir plusieurs zones (partiels). Je dois ajouter cette vue de rapport à mon tableau de bord mais je ne sais pas comment. Cette vue de rapport utilise la logique complexe du contrôleur et affiche les résultats. Comment pourrais-je "coller" la (logique + présentation) de la vue existante (rapport) dans mon partiel, donc je pourrais l'utiliser sur mon tableau de bord ??Y at-il un moyen d'exécuter une vue à l'intérieur d'un partiel

Merci. Valve.

Répondre

1

(je l'espère, je comprends le problème, ici ...)

Cette partie semblait importante:

Ce point de vue du rapport utilise la logique complexe du contrôleur

Comme En règle générale, les contrôleurs devraient être simples. Vraiment simple. La règle de base est "contrôleur mince, modèle gros" (Rails Envy fait un peu divertissant mais utile screencasts on the subject)

Que se passerait-il si vous avez créé un nouveau modèle (peut-être pas hérité de ActiveRecord :: Base) qui a encapsulé la logique vous voulez livrer dans le partiel? Ensuite, différentes combinaisons contrôleur/action peuvent fournir l'information dans vos vues selon les besoins/requis.

Ou ai-je complètement raté le point (pas impossible!)

0

J'ai rencontré un problème similaire il y a quelque temps, quand ils ont désapprouvé render_controller. La seule solution que j'ai trouvée alors était d'utiliser ajax, en passant un paramètre à la page que vous voulez charger qui contourne la disposition.

0

Si je ne me trompe pas, vous pouvez faire une render_component, mais cela est tout à fait mal vus de nos jours.

C'est la meilleure façon de votre problème si

0

Je suggère à factoriser le code du contrôleur de rapport (si c'est celui qui contient la logique « complexe ») et le mettre dans une classe wrapper qui peut être utilisé par le tableau de bord et la vue de rapport.