2009-08-21 7 views
1

Dans mon contrôleur, j'ai ceci:variables Rails dans le modèle ne fonctionne pas

user.save 
if user.leveled_up==true 
    flash[:notice]="HOOOORAY!!!" 
end 

et dans mon modèle j'ai:

before_save :check_xp 

# .... 

def leveled_up=(leveled_up) 
     @leveled_up=leveled_up 
     if @leveled_up==true 
      self.statpoints+=5 
      hp=max_hp 
     end 
    end 

    def leveled_up 
     @leveled_up 
    end 

    private 
    def check_xp 
     leveled_up=false 
     case self.xp 
     when 0..999 
      self.level=1 
     when 1000..2999 
      leveled_up=true if self.level==1 
      self.level=2 
     when 3000..4999 
      leveled_up=true if self.level==2 
      self.level=3 
     when 5000..9999 
      leveled_up=true if self.level==3 
      self.level=4 

# ... 

     end 

    end 

Mais ce ne fonctionne pas. Même si l'utilisateur nivelé la fonction leveled_up retourne false ...

je dois faire quelque chose de mal ...

Merci !!

+0

Alors, quel est le problème (plus précisément que 'ça ne marche pas')? Est-ce que l'utilisateur ne voit tout simplement pas "HOORAY", vous obtenez une exception quelque part, ou autre chose? –

+0

Chris, le hourra ne montre pas (il y a une fonction pour afficher en vue) et si @ leveled_up == true self.statpoints + = 5 hp = max_hp fin ne tourne pas ... (jamais) –

Répondre

4

ici leveled_up = false n'est pas un appel de méthode. Vous avez créé une variable locale appelée leveled_up, elle n'a rien à voir avec la méthode. pour appeler la méthode, utiliser

self.leveled_up 
+0

Merci! Cela l'a réparé ... –

Questions connexes