2009-08-21 48 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