找不到'id'=的订单

问题描述 投票:1回答:1

我确实关闭了我的浏览器但仍然渲染,本地主机服务器重新启动但仍然存在错误。

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任何详细的答案..?

ruby-on-rails shopping-cart
1个回答
1
投票

问题是使用current_order方法,你传递nil值找到方法Order.find(nil)。你需要像这样交换ifelse语句

def current_order
  if session[:order_id].nil?
    Order.new
  else
    Order.find(session[:order_id])   
  end
end
© www.soinside.com 2019 - 2024. All rights reserved.