Deux contrôleurs pour une vision partagée dans Ruby on Rails
J'ai deux contrôleurs pour les deux modèles respectifs, par exemple, des photos et des catégories. index et de montrer les méthodes sont très similaires dans chaque contrôleur, et les points de vue sont identiques. Quelle est la meilleure méthode pour partager la vue par les deux modèles?
J'ai bien deux options:
-
Utiliser une aide. Dans le helper va mettre le code pour l'afficher, et fera appel à l'aide, chaque point de vue (photos/points de vue et les catégories/vues)
-
Utilisation partielle dans chaque point de vue. Je pense que c'est plus propre solution, mais je vois d'énormes SEC dans mon esprit lorsque le code de cette solution.
Donc, j'ai deux contrôleurs à partir de deux modèles, chacun à et expose @photo de l'objet (photos contrôleur avec toutes les photos, et les catégories de contrôleur avec juste sélectionné categorie photos) et j'ai besoin d'un point de vue pour afficher à la fois.
Je suis à la recherche d'une solution élégante pour cela, de se plaindre de REPOS et SEC principes. Une idée?
Merci d'avance.
Vous devez vous connecter pour publier un commentaire.
J'ai une situation similaire avec l'un de mes projets. Tous les supprimer des vues pour la plupart des contrôleurs sont décorées de la même façon, l'affichage de la même confirmation des boîtes, et tout simplement la rend prévisible d'affichage d'un objet est supprimé.
La solution était assez simple et élégant, à mon avis. Tout simplement, ce que nous (les développeurs) le fait a été de créer un nouveau répertoire dans
app/views
appeléshared
et mettre partagé leur point de vue là. Ces peut-être plein de fichiers de modèle ou tout simplement partiels.Je suggère l'utilisation d'un tel modèle (dans les deux catégories, ni photos afficher les répertoires, mais plutôt dans le répertoire partagé) et le rendu manuellement à partir de la vue.
par exemple, avoir une méthode en tant que telle dans les deux contrôleurs et d'un fichier
app/views/shared/photo.html.erb
:Ce qui devrait fournir les modèles partagée. C'est la plus secs route et ne pas avoir le sentiment de la pollution que vous obtenez lors de l'utilisation d'un plus ou moins vide de vue dans chaque contrôleur de vue du répertoire juste d'inclure un partage partiel, ce que je comprends de votre question suggère.
Sur le première réponse:
Si l'partielle doit être rendu à partir d'une vue:
et l'partielle doit être dans app/views/shared/_photo.html.erb
J'avais utiliser un helper, car elles sont partagées entre les vues. Pour la partie HTML, j'utilise les partiels, donc ce serait un mélange de deux façons.
Cela ressemble à un bon cas d'utilisation de la Les cellules gem.
@bjeanes Si tous vos supprimer les vues sont les mêmes, vous pouvez créer des vues/default/supprimer.html.erb et tous les supprimer actions de l'utiliser.
C'est ce que je suis en train de faire: la Plupart de mon point de vue par défaut, et je crée spécifiques uniquement lorsque cela est nécessaire
Mise à jour: Ok, ce post est à partir de 2009, de toute façon, je vais garder mon commentaire ici au cas où quelqu'un se fait ici à partir de Google comme je l'ai fait.