Merci pour vos avis. C'est une question que je pensais stupide mais je me rend compte que c'est quand même assez complexe. Je crois que ça viens en parti du fait qu'une vue n'est pas très objet.
Dans mon cas, je pense utiliser Drapper et les DecoratedFinder. Ça parait intéressant. En ce qui concerne Cells, je suis content de savoir que ça existe mais je crois que mes besoins sont suffisamment simple pour le moment. Je vais opter pour "KISS" et utiliser des partials pour les gros bout d'HTML. Je vais continuer à utiliser les presenters pour gérer plusieurs modèles. Pour les helpers, je suis d'accord avec Olivier, il faut les utiliser quand ce n'est pas une fonction relié à un objet spécifique. Je vais devoir faire des recherches pour utiliser draper avec inherited_resources. Merci pour votre aide. Le 11 juin 2013 12:26, Simon Courtois <[email protected]> a écrit : > @cyril: Ok je vois le genre, effectivement c'est une autre solution. > > Après je trouve que pour ce genre de trucs assez simples Cells fait le > boulot correctement. > Ça dépend de ta logique d'organisation je pense. > En tout cas c'est intéressant de voir une autre façon de faire :) > > Simon Courtois > > On Tuesday 11 June 2013 at 18:16, Cyril Mougel wrote: > > expose(:cart) { Cart.new(session[:cart]) } > expose(:cart_decorate) { CartDecorator.decorate(cart) } > > > 2013/6/11 Simon Courtois <[email protected]> > > On est d'accord sur les filters :) par contre pour l'affiche du coup tu le > fais à ajax du coup ? > Le côté immuable ça ok pas de souci, moi c'est plus la partie vue sur > laquelle je me questionnais. > > Simon Courtois > > On Tuesday 11 June 2013 at 18:09, Cyril Mougel wrote: > > before_filter == BAN > before == BAN > after == BAN > > voila ma régle :) > > un shopping cart c'est simple, et avec de l'immutable, j'ai le versionning > implicite :p > > class Cart > > include Adamantium > > def initialize(items) > @items = items > end > > def add(item) > Cart.new(@items | item) > end > end > > > > > 2013/6/11 Simon Courtois <[email protected]> > > @cyril du coup un exemple con mais un shopping cart tu le gères comment ? > > Parce je suppose qu'à coups de before_filter et de decent_exposure tu peux > faire qqchose mais je trouve ça un peu gore > et le coup de mettre ta logique dans la vue ça me choque un peu. Après je > compte pas partir en croisade sur les trucs > comme ça mais je sais pas ça me semble pas la solution. > > Simon Courtois > > On Tuesday 11 June 2013 at 17:46, Cyril Mougel wrote: > > Perso j'aime pas trop Cells, ca sandbox trop. > > Je suis pour > > decent_exposure > Draper > Object On Rails > Virtus > Adamantium > > > > 2013/6/11 Guirec Corbel <[email protected]> > > @cyril : Tu oublis de factoriser par le coef DHH. J'appliquerai ta > formule très bientôt. > > @simon : je ne trouve rien à propos de delegate_finder. Je n'en ai jamais > entendu parlé. Peux-tu montrer un exemple? > > Je ne connaissais pas Cells. Je vais voir ce que c'est. > > @olivier : Merci pour ton avis. > > > Le 11 juin 2013 11:16, Olivier El Mekki <[email protected]> a écrit > : > > Hello, > > Le bon moment pour utiliser un presenter, c'est avant tout une décision > esthétique. La plupart du temps, les méthodes des presenters ne seront > utilisées qu'une seule fois, il n'y a donc pas ici de règle de > refactoring applicable à tous les coups : le bon moment d'utiliser un > presenter est celui où tu estimes qu'il y a trop de logique de > présentation dans ta vue. > > Les helpers sont très similaires, mais ont plus vocation à être > réutilisés, sans être liés à une resource particulière. > > Tu peux t'en servir par exemple pour formatter des messages > d'erreur, générer des boutons qui sont composés de plusieurs éléments > mais sont trop succints pour mériter un partial, etc. > > Si tu t'apprêtes à utiliser un presenter pour n'y mettre qu'une ou deux > méthodes, il serait sûrement plus approprié d'utiliser des helpers > égalements. > > On 11:03 Tue 11 Jun , Guirec Corbel wrote: > > J'ai oublié de dire que, dans le cas des scopes, je parles de parties qui > > concerne la présentation, utilisés par un menu par exemple. > > > > Une autre question, à partir de quel complexité faudrait t'il utiliser un > > presenter. Si on à ça par exemple : > > > > f.association :company, label_method: :company_name, value_method: > > :id, include_blank: false > > > > Est ce que ça serait utile de faire une fonction pour ça? Où mettre > > cette fonction si ça devient trop complexe? > > > > > > > > Le 11 juin 2013 10:43, Guirec Corbel <[email protected]> a écrit : > > > > > Bonjour, > > > > > > Aujourd'hui je pose une question que je trouve un peu basique mais je > suis > > > totalement perdu : Quand utiliser draper, des presenters, des helpers, > des > > > scopes ou des partials? > > > > > > J'ai lu le post de Philippe Creux : > > > http://reverbhq.com/blog/2012/08/building-web-apps-with-activeadmin/et > > > je suis d'accord avec lui. On devrait utiliser draper quand on a besoin > > > d'une action simple agissant sur un modèle. Un presenter contient une > > > logique plus complexe agissant sur plusieurs modèles. > > > > > > J'aime bien la méthode de Ryan Bates présentée ici : > > > http://railscasts.com/episodes/287-presenters-from-scratch, le > problème, > > > pour moi, c'est qui créer une variable "user_presenter" qui délègue des > > > fonctions à sont modèle "user". Si l'on a beaucoup d'attributs ça peut > > > devenir compliqué. Je pense que l'on ne devrait pas pour autant > utiliser > > > des fois "user_presenter" et d'autres fois "@user". > > > > > > Je n'aime pas non plus le fait d'instancier un objet "@presenter" dans > le > > > contrôleur. Ça viole une des lois de Sandi Metz. > > > > > > En ce qui concerne les partials, ça sert à décomposé de gros bloques de > > > code dans de plus petits. > > > > > > Je m'interroge au niveau des scopes sur le fait d'appeler une fonction > > > d'un modèle dans une vue. Par exemple, si on fait ceci : > > > > > > <% User.active_users.each do |user| %> > > > .... > > > <% end %> > > > > > > Je ne suis pas certain que ça soit une bonne pratique, qu'en > pensez-vous? > > > > > > Quant aux helpers... ils servent à créer du html qui ne se sert d'aucun > > > modèle? > > > > > > Quel est votre avis là dessus? Quels sont vos techniques? Avez vous des > > > bons exemples? > > > > > > Bye! > > > > > > > -- > > -- > > 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 > [email protected] > > Pour résilier votre abonnement envoyez un e-mail à l'adresse > [email protected] > > --- > > 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 > [email protected]. > > Pour plus d'options, visitez le site > https://groups.google.com/groups/opt_out . > > > > > > > -- > Olivier El Mekki. > > -- > -- > 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 > [email protected] > Pour résilier votre abonnement envoyez un e-mail à l'adresse > [email protected] > --- > 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 > [email protected]. > Pour plus d'options, visitez le site > https://groups.google.com/groups/opt_out . > > > > -- > -- > 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 > [email protected] > Pour résilier votre abonnement envoyez un e-mail à l'adresse > [email protected] > --- > 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 > [email protected]. > Pour plus d'options, visitez le site > https://groups.google.com/groups/opt_out . > > > > > > > -- > Cyril Mougel > http://blog.shingara.fr > > -- > -- > 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 > [email protected] > Pour résilier votre abonnement envoyez un e-mail à l'adresse > [email protected] > --- > 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 > [email protected]. > Pour plus d'options, visitez le site > https://groups.google.com/groups/opt_out . > > > > > -- > -- > 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 > [email protected] > Pour résilier votre abonnement envoyez un e-mail à l'adresse > [email protected] > --- > 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 > [email protected]. > Pour plus d'options, visitez le site > https://groups.google.com/groups/opt_out . > > > > > > > -- > Cyril Mougel > http://blog.shingara.fr > > -- > -- > 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 > [email protected] > Pour résilier votre abonnement envoyez un e-mail à l'adresse > [email protected] > --- > 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 > [email protected]. > Pour plus d'options, visitez le site > https://groups.google.com/groups/opt_out . > > > > > -- > -- > 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 > [email protected] > Pour résilier votre abonnement envoyez un e-mail à l'adresse > [email protected] > --- > 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 > [email protected]. > Pour plus d'options, visitez le site > https://groups.google.com/groups/opt_out . > > > > > > > -- > Cyril Mougel > http://blog.shingara.fr > > -- > -- > 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 > [email protected] > Pour résilier votre abonnement envoyez un e-mail à l'adresse > [email protected] > --- > 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 > [email protected]. > Pour plus d'options, visitez le site > https://groups.google.com/groups/opt_out . > > > > > -- > -- > 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 > [email protected] > Pour résilier votre abonnement envoyez un e-mail à l'adresse > [email protected] > --- > 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 > [email protected]. > Pour plus d'options, visitez le site > https://groups.google.com/groups/opt_out . > > > -- -- 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 [email protected] Pour résilier votre abonnement envoyez un e-mail à l'adresse [email protected] --- 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 [email protected]. Pour plus d'options, visitez le site https://groups.google.com/groups/opt_out .
