0

我有一个以前可以使用的方法“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 以查看是否会有所作为,但事实并非如此。

如果它仍然在控制台中工作,这是否意味着它可能不是被破坏的方法本身?

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

4

1 回答 1

0

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

于 2013-11-04T20:11:54.980 回答