我有一個錯誤,但我不能確定來源:(它工作正常,我第一次使用add_to_cart行動,但第二次,我有這個錯誤提高Ruby on Rails 3:會話問題:釋放內容
Started GET "/home/add_to_cart?id=5&money=USD" for 10.0.1.3 at 2013-05-26 17:22:42 +0200
Processing by HomeController#add_to_cart as HTML
Parameters: {"id"=>"5", "money"=>"USD"}
Completed 500 Internal Server Error in 2ms
NoMethodError (undefined method `+' for nil:NilClass):
app/models/cart.rb:14:in `add_artwork'
app/controllers/home_controller.rb:39:in `add_to_cart'
似乎對象@cart丟失或東西....或對象「藝術品」丟失......我不知道......
控制器
def add_to_cart
artwork = Artwork.find(params[:id])
@cart = find_or_create_cart
@cart.add_artwork(artwork) #--- line 39
redirect_to(:action => 'show_cart')
end
def show_cart
@cart = find_or_create_cart
end
private
def find_or_create_cart
session[:cart] ||= Cart.new
end
cart.rb
class Cart
attr_reader :items
attr_reader :total_price
def initialize
@items = []
@total_price = 0.0
end
def add_artwork(artwork)
@items << LineItem.new_based_on(artwork)
@total_price += artwork.price #---- line 14
end
end
line_item.rb
class LineItem < ActiveRecord::Base
belongs_to :artwork
belongs_to :order
def self.new_based_on (artwork )
line_item = self.new
line_item.artwork = artwork
line_item.price = artwork.price
return line_item
end
end
session_store.rb
Larrabyblaine::Application.config.session_store :active_record_store
抱歉,但沒了。 @total_price在「初始化」操作中啓動。 – Lefty
我試圖評論第14行看看會發生什麼,我得到一個符號(0x7b)的轉儲格式錯誤,導致應用程序崩潰。我必須從數據庫中刪除相應的會話才能返工。 – Lefty