【问题标题】:Couldn't find Order with 'id'=找不到带有 'id'= 的订单
【发布时间】:2018-06-05 15:18:22
【问题描述】:

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

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

【问题讨论】:

  • 您能否分享您的routes.rb 以及您在哪一行遇到错误?
  • Rails.application.routes.draw 确实得到 '/products' => 'products#home' 资源:products 资源:order_items 资源:carts,仅:[:show] root 'products#home'结束

标签: ruby-on-rails shopping-cart


【解决方案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

【讨论】:

    猜你喜欢
    • 2015-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-28
    • 2015-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多