使用acts-as-shopping-cart gem时出现此错误:
undefined method `*' for nil:NilClass Extracted source (around line #5): 2: 3: <%= render :partial => 'shopping_cart_item', :collection => @shopping_cart.shopping_cart_items %> 4: 5: SubTotal:<%= number_to_currency @shopping_cart.subtotal %> 6: Taxes:<%= number_to_currency @shopping_cart.taxes %> 7: Total:<%= number_to_currency @shopping_cart.total %>
这些字段似乎是在 gem 源中定义的。
显示.html.erb
<h1>Shopping Cart</h1>
<%= render :partial => 'shopping_cart_item', :collection => @shopping_cart.shopping_cart_items %>
<div><b>SubTotal:</b><%= number_to_currency @shopping_cart.subtotal %></div>
<div><b>Taxes:</b><%= number_to_currency @shopping_cart.taxes %></div>
<div><b>Total:</b><%= number_to_currency @shopping_cart.total %></div>
购物车.rb
class ShoppingCart < ActiveRecord::Base
acts_as_shopping_cart
def tax_pct
8.25
end
def taxes
(subtotal - 10) * tax_pct
end
end
应用程序跟踪
app/views/shopping_carts/show.html.erb:5:in `_app_views_shopping_carts_show_html_erb__2338506009803118188_70153042369260'
shopping_carts.controller
class ShoppingCartsController < ApplicationController
before_filter :extract_shopping_cart
def create
@product = Product.find(params[:product_id])
@shopping_cart.add(@product, @product.price)
redirect_to shopping_cart_path
end
def show
end
private
def extract_shopping_cart
shopping_cart_id = session[:shopping_cart_id]
@shopping_cart = session[:shopping_cart_id] ? ShoppingCart.find(shopping_cart_id) : ShoppingCart.create
session[:shopping_cart_id] = @shopping_cart.id
end
end
我的回购