2009-08-21 47 views
1

在我的控制,我有这样的:Rails的变量不工作

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

,并在我的模型,我有:

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 

但是,这是行不通的。即使用户拉平leveled_up返回false功能...

我必须做一些错误的...

谢谢!

+0

那么什么(不是“它不工作”更具体)的问题?难道用户只是没有看到“HOORAY”,你在某个地方或者其他地方发现异常? – 2009-08-21 22:11:48

+0

克里斯,所述万岁不显示(有一个在视图中显示的函数)和 如果@ leveled_up == TRUE self.statpoints + = 5 马力= max_hp 端 未运行...(永不) – 2009-08-21 22:19:42

回答

4

这里leveled_up = false不是方法调用。您实际上创建了一个名为leveled_up的局部变量,它与该方法无关。 要调用的方法,使用

self.leveled_up 
+0

谢谢!这解决了它... – 2009-08-21 23:08:32