J'utilise un pattern similaire à Tim. J'appelle ces objets des Pages, ils
sont stockés dans app/pages/article_page.rb. Je ne les utilise que lorsque
la logique de la page est complexe.

Je trouve ça plutôt chouette, mais j'espère toujours trouver... mieux ?

On Thu, Jan 22, 2015, 06:25 Guirec Corbel <guirec.cor...@gmail.com> wrote:

> Si comprends bien tu veux avec des informations sur plusieurs modèles dans
> une même page.
>
> As-tu pensé à faire un presenter :
> http://eewang.github.io/blog/2013/09/26/presenting-the-rails-presenter-pattern/
> ? En gros tu pourrais faire une classe comme ceci :
>
> class ArticlePresenter
>   def initialize(article:, provenance:, consultation:, statistique:)
>     #...
>   end
>
>   def sum_of_constulations_by_month
>     # return the sum of consultations for the last year by month
>   end
>
>   #...
> end
>
> Tu mets toute la logique dans cette classe qui est celle que tu instancies
> dans ton controller et que tu renvois à ta vue. Il y a également le facade
> pattern : https://medium.com/@ryakh/facade-pattern-on-rails-d65b86cdb5b1
> . Je pense que c'est un peu la même chose mais je ne m'y suis jamais
> attardé en profondeur.
>
> Qu'en penses-tu?
>
>
> Le Thu Jan 22 2015 at 09:06:14, Tim <itsumo.sibyl...@gmail.com> a écrit :
>
> Salut à tous
>>
>> Question purement théorique, mon problème étant déjà résolue, mais
>> j'aimerais tout de meme savoir si il existe une autre (surement) voir une
>> meilleure facon de le résoudre.
>>
>>
>> Le problème est simple,
>> j'ai très souvent des vues qui nécessitent la combinaison de trois objets
>> pour afficher toutes les informations nécessaires.
>> Je m'impose comme contraintes :
>> - éviter toute logique dans le code html
>> - éviter de passer plus d'1 objet à ma vue (j'utilise render: 'ma/page',
>> locals: ... )
>> - ne pas utiliser les helpers de rails (Des modules chargé sur toutes les
>> pages ? non merci)
>> - ne pas utiliser de décorateur (comme le gem drapper) car je vais me
>> retrouver avec un fichier de 600 lignes car je vais cumuler toutes les vue
>> dans ce même fichier.
>>
>> Je vais tenter un exemple pour vous montrer ce que j'ai fait :
>>
>> Je veux afficher la page admin/articles/:id
>> Sur cette page, je veux toutes les informations lié à cette article (de
>> pres ou de loin et avec des statistiques sur le mois précédent):
>> nombre de fois consulté, provenance géographique, différence avec le mois
>> précédent....etc
>>
>> En gros pour afficher toutes les informations sur ma page j'ai besoin des
>> objets :
>> Article, Provenance, Consultation, et Statistique(Consultation,
>> Consultation - 1.month)
>>
>> Ce que j'ai fait
>> j'ai créé un dossier app/views_helper dans lequel j'ai créé le fichier
>> article_show.rb (qui est juste class ArticleShow; def initialize(...); end
>> ......)
>> Je l'instancie avec mes 3 objets, et je définis les méthodes utile pour
>> la vue.
>> Ca fonctionne très bien, le code est facilement testable.
>>
>> Le probleme : Lorsque quelqu'un va reprendre mon code, comment va-t-il
>> faire le lien entre app/views_helper/article_show.rb et admin/articles/:id
>> ? (certe en lisant le controlleur, là ou je l'instancie avant de le passer
>> à ma vue)
>> Existe t'il une convention qui normalise l'utilisation d'une classe
>> directement lié à une vue ?
>> Est ce que cette idée de classe lié à une vue est une hérésie ?
>>
>> Au départ je contais mettre mes classes directement dans
>> app/views/articles/mon_objet_pour_show.rb mais Rails ne la trouvait pas.
>> Et vous, comment codez vous vos vues complexes ?
>>
>> Dans l'attente de vos réponses, merci de votre attention ;)
>>
>> Bon dev.
>>
>> --
>> --
>> Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance"
>> de Google Groups.
>> Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
>> railsfrance@googlegroups.com
>> Pour résilier votre abonnement envoyez un e-mail à l'adresse
>> railsfrance-unsubscr...@googlegroups.com
>> ---
>> Vous recevez ce message, car vous êtes abonné au groupe Google Groupes
>> "Railsfrance".
>> Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le
>> concernant, envoyez un e-mail à l'adresse
>> railsfrance+unsubscr...@googlegroups.com.
>> Pour obtenir davantage d'options, consultez la page
>> https://groups.google.com/d/optout.
>>
>  --
> --
> Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
> Google Groups.
> Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
> railsfrance@googlegroups.com
> Pour résilier votre abonnement envoyez un e-mail à l'adresse
> railsfrance-unsubscr...@googlegroups.com
> ---
> Vous recevez ce message, car vous êtes abonné au groupe Google Groupes
> "Railsfrance".
> Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le
> concernant, envoyez un e-mail à l'adresse
> railsfrance+unsubscr...@googlegroups.com.
> Pour obtenir davantage d'options, consultez la page
> https://groups.google.com/d/optout.
>

-- 
-- 
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de 
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse 
railsfrance@googlegroups.com
Pour résilier votre abonnement envoyez un e-mail à l'adresse 
railsfrance-unsubscr...@googlegroups.com
--- 
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes 
Railsfrance.
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, 
envoyez un e-mail à l'adresse railsfrance+unsubscr...@googlegroups.com.
Pour plus d'options, visitez le site https://groups.google.com/d/optout .

Répondre à