繁体   English   中英

Rails为nil:NilClass使用的未定义方法`+'

[英]Rails undefined method `+' for nil:NilClass

我有一个以前一直在使用的方法“ calc_price”,现在仍然可以在控制台中使用,但是现在在浏览器中出现以下错误:

NoMethodError in Quotes#index

undefined method `+' for nil:NilClass

18:             Price: $<%= f.calc_price %><br />

app/models/quote.rb:33:in `block in calc_price'
app/models/quote.rb:13:in `calc_price'
app/views/quotes/index.html.erb:18:in `block in _app_views_quotes_index_html_erb__1788058106025144185_70227449765940'
app/views/quotes/index.html.erb:15:in `each' 
app/views/quotes/index.html.erb:15:in `_app_views_quotes_index_html_erb__1788058106025144185_70227449765940'

它仍然可以在控制台中工作的事实令我感到困惑,尤其是因为我根本没有更改方法来使其中断。 方法:

def calc_price
    self.items.each do |item|
        pr = if item.amount < 10
            item.product.pricerange0
        elsif item.amount < 25 
            item.product.pricerange1
        elsif item.amount < 50 
            item.product.pricerange2
        elsif item.amount < 100
            item.product.pricerange3
        elsif item.amount < 250
            item.product.pricerange4
        elsif item.amount < 500
            item.product.pricerange5
        end
        screens = 0
        sd = item.shirtdesigns.count
        pd = item.pantdesigns.count
        screens = (sd+pd)
        screenprice = (screens*25)
        inkprice = ((item.inkcolors-1)*0.5)
        newprice = ((pr+inkprice)*item.amount+screenprice)
        item.price = newprice
        item.save
    end
    newprice = self.items.sum('price')
    self.price = newprice
    self.save
    return self.price
end

报价控制器

def index
  @quote = Quote.find(:all)
  @myquotes = Quote.find(:all, :conditions => { :user_email => current_user.email })
end

我尝试添加screenprice = 0,newprice = 0和inkprice = 0,以查看是否会有所不同,但事实并非如此。

如果它仍然可以在控制台中运行,这是否意味着不是方法本身被破坏了?

任何帮助将不胜感激! 谢谢

pr很可能是零。 数量大于500的项目将导致pr在上面的代码中为nil。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2025 STACKOOM.COM