2016-08-13 39 views
0

這應該是一個相當簡單的錯誤來解決(我希望)。當我的應用上的joke被批准後,我希望user被授予5 manpoints(不要問)。我現在有這在我的「jokes_controller`:從Rails控制器添加到整數變量

def approve 
    @joke = Joke.find(params[:id]) 
    @joke.update_attributes(approved: true) 
    if @joke.user.manpoints = nil 
     @joke.user.manpoints = 5 
    else 
     @joke.user.manpoints += 5 
    end 
    @joke.save 
    redirect_to jokes_path 
    end 

我得到這個錯誤,當我嘗試批准一個笑話:

undefined method `+' for nil:NilClass 

我以爲+ =是‘紅寶石路’做這個?任何人都可以設置我嗎?

+0

嘗試將'@joke.user.manpoints = nil'更改爲'@ joke.user.manpoints.nil?'和'@joke.user.manpoints == nil'應該是正確的語法 – mrvncaragay

回答

0

更改=if條件到==。我假設你需要比較manpointsnil,而不是將nil分配給manpoints。 它應該是這樣的:

if @joke.user.manpoints == nil 
    ... 

可以省略==運營商在這裏:

unless @joke.user.manpoints 
    ... 

PS。你爲什麼除了manpointsnil

+0

這些更改會消除該錯誤,但在批准操作之後,用戶的'manpoints'仍然是'nil'。 – Liz

+0

您需要保存'user'實例。 用'@ joke.user.save'保存。 – user1201917

+0

完美!謝謝! – Liz