我正在尝试将电子商务功能集成到我的 rails 应用程序中,但在创建新订单时遇到了麻烦。我从一个购物车开始,其中有_many 个订单,其中有_many 个交易。我的订单数据库中的第一个字段是 cart_id。我需要能够从 view/order/new.html.erb 访问购物车中的信息(例如 total_price)。
建立这种关系的最佳地点在哪里,如何建立?我可以通过会话 id 找到购物车,但我不知道如何建立关系。我在考虑订单模型,在新动作中,是这样的吗?
def new
@order = Order.new
current_cart.@order.build
在我的应用程序控制器中定义的是函数 current_cart
def current_cart
Cart.find(session[:cart_id])
rescue ActiveRecord::RecordNotFound
cart = Cart.create
session[:cart_id] = cart.id
cart
end
更新
这是我的新功能和创建功能,我需要该值
def new
@order = Order.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @order }
end
end
# POST /orders
# POST /orders.json
def create
@order = Order.new(params[:order])
# THIS IS WHERE I HAVE TRIED TO BUILD THE RELATIONSHIP
# I have tried current_cart.orders.build, @order.cart = current_cart, and
# @order = current_cart.build_order(params[:order])
@order.ip_address = request.remote_ip
if @order.save
if @order.purchase
render :action => "success"
else
render :action => "failure"
end
else
render :action => 'new'
end
end
这是我需要访问模型中的购物车的地方
def price_in_cents
(cart.total_price*100).round
end
而且我总是会为未定义的函数捕获异常,无论是构建函数还是总价格函数