我确实关闭了我的浏览器但仍然渲染,本地主机服务器重新启动但仍然存在错误。
module ApplicationHelper
def current_order
if session[:order_id].nil?
Order.find(session[:order_id])
else
Order.new
end
end
end
class OrderItemsController < ApplicationController
def create
@order = current_order
@order_item = @order.order_items.new(order_item_params)
@order.save
session[:order_id] = @order.id
end
def update
@order = current_order
@order_item = @order.order_item.find(params[:id])
@order_item.update(order_item_params)
@order_items = @order.order_items
end
def destroy
@order = current_order
@order_item = @order.order_item.find(params[:id])
@order_item.destroy
@order_items = @order.order_items
end
private
def order_item_params
param.require(:order_item).permit(:product_id, :p_quantity)
end
end
我在做错的地方..?
get '/products' => 'products#home'
resources :products
resources :order_items
resources :carts, only: [:show]
root 'products#home'
我通过rails控制台创建了一个订单,但错误仍在渲染..#help任何详细的答案..?
问题是使用current_order
方法,你传递nil
值找到方法Order.find(nil)
。你需要像这样交换if
和else
语句
def current_order
if session[:order_id].nil?
Order.new
else
Order.find(session[:order_id])
end
end