Pb conceptuel

Bonjour !

Je suis en train d’écrire un jeu sur Internet (un peu dans le style des
jeux d’élevage).

J’ai un controleur principal qui représente toutes les actions du
joueur. Les différentes actions correspondent à des pages (comme
acheter, vendre, surveiller etc…). J’ai déjà un layout global dans
lequel on trouve le menu, l’entete, le pied, la mise en page générale.

Ensuite, j’aimerais avoir sur toutes les pages d’actions qques infos sur
le joueur : son pseudo, son solde, son nb de points…

Je n’arrive pas à savoir qu’est-ce que je mets où pour arriver à ca.

  • Créer des variables dans chaque action, et l’afficher dans chaque vue
    correspondante : j’y arrive, mais c’est répéter les meme choses partout
    : gênant le jour ou je veux modifier qqchose.
  • Créer des variables dans chaque action, et les afficher dans le layout
    (sous condition d’être connecté) : c’est déjà un moindre mal, mais j’y
    arrive pas ;
  • Créer des variables dans le contrôleur application, et les afficher
    dnas le layout (sous condition d’être connecté) : bin j’y arrive pas non
    plus.

quelle est la bonen méthode ? merci (-:

gUI

Il faut que tu crées un partiel, genre :

views/shared/player_actions.rhtml ( attention, le "" n’apparait pas
dans
l’appel à “render” )

Tu l’invoques - par exemple - Ã partir de application.rhtml (qui
contient le
layout englobant), en lui passant les paramètres partinents :

<%= render :partial => ‘shared/player_actions’ :locals => { :var1 =>
“val1”, :var2 => “val2” } %>

Tu n’auras plus que views/shared/_player_actions.rhtml à maintenir.

Ca me semble pas mal (il faudrait juste vérifier que ça s’intègre bien
dans l’architecture de cache de Rails afin d’avoir des bonnes perfs).
Cependant, ça ne suffit pas. Il faut encore que dans chaque action on
est accès aux variables “val1” et “val2”. Pour ce faire, la meilleur
méthode est d’intégrer un filtre au controlleur :

http://api.rubyonrails.org/classes/ActionController/Filters/ClassMethods.html

++

yk

philippe lachaise a écrit :

Il faut encore que dans chaque action on est accès aux variables “val1” et “val2”.

C’est à dire que dans chaque action je dois positionner ces variables ? Il
n’y a pas un moyen de faire ces traitements
une seule fois ?

(je suis pas chez moi, je peux pas faire d’essais…)

gUI


Pour la santé de votre ordinateur, préférez les logiciels libres !

Guillaume B. : (05 61) 19 40 65 / bureau S723

Les filtres (cf mon post précédent) te permettent, en gros, d’avoir des
callbacks pour chaque action d’un controlleur.
Par exemple, tu peux définir une fonction que tu vas passer au callback
“before_filter”. A ce moment là, avant que Rails n’exécute une action,
il va d’abord exécuter cette fonction.
Donc, si dans cette fonction tu initialises les valeurs donc tu as
besoin dans le “partial”, t’as gagné : tu ne fais le travail qu’une
seule fois, au lieu de le répéter pour chaque action.

++

yk

Guillaume B. a écrit :

Donc, si dans cette fonction tu initialises les valeurs donc tu as
besoin dans le “partial”, t’as gagné

okéééé !!!

c’est nickel, j’ai tout compris (-: (enfin, je crois).

gUI


Pour la santé de votre ordinateur, préférez les logiciels libres !

Guillaume B. : (05 61) 19 40 65 / bureau S723

Tu l’invoques - par exemple - à partir de application.rhtml (qui
contient le layout englobant), en lui passant les paramètres partinents :
alors là, j’ai un truc bizarre…

si je l’invoque depuis mon application.rhtml (qui est donc mon layout
général), il ne s’affiche que lorsque je suis déconnecté (j’utilise
ActAsAuthenticated). Des que je me connecte, le partiel n’est pas
affiché.
en fait, quand je ne suis pas connecté, je suis sous le controleur
“account” et quand je suis connecté, c’est le controleur “game” qui
prend la main. mais je vois pas le rapport, puisque tout le monde
utilise le layout général (je le vois bien !!!)

gUI

alors là, j’ai un truc bizarre…
si je modifie le titre principal de mon appli (du simple HTML), ca ne me
le change que lorsque je suis déconnecté. ca garde l’ancien titre des
que je me connecte !

pb de cache ???

gUI

pb de cache ???
non, comme d’habitude le pb se situe entre l’écran et la chaise (-:

laissez tomber, ca marche, merci bcp à tous les 2 !!!

gUI

Sinon,
http://api.rubyonrails.org/classes/ActionController/Filters/ClassMethods.html
est pas mal pédagogique pour présenter ce mécanisme.

++

yk

Guillaume B. a écrit :