Ruby on rails Rails:ActiveRecord::RecordNotFound在购物车中

Ruby on rails Rails:ActiveRecord::RecordNotFound在购物车中,ruby-on-rails,ruby,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby,Ruby On Rails 3,Activerecord,我为所有项目提供了用户友好的\u id。我在cart.rb模型中得到一个错误,它说找不到“id”为钢笔的产品 我不知道该怎么办。任何帮助都将不胜感激 cart.rb class CartItem < ActiveRecord::Base attr_reader :product_id, :quantity def initialize product_id, quantity = 1 @product_id = product_id @qu

我为所有项目提供了用户友好的\u id。我在cart.rb模型中得到一个错误,它说<代码>找不到“id”为钢笔的产品

我不知道该怎么办。任何帮助都将不胜感激

cart.rb

class CartItem < ActiveRecord::Base
    attr_reader :product_id, :quantity

    def initialize product_id, quantity = 1
        @product_id = product_id
        @quantity = quantity
    end

    def increment
        @quantity = @quantity + 1
    end

    def product
        Product.find product_id
    end

    def total_price
        product.price * quantity    
    end


end
def initialize_cart
    @cart = Cart.build_from_hash session
end
def build_order_items
    @cart.items.each do |item|
        @order.order_items.create! product_id: item.product_id, quantity: item.quantity
    end
OrderForm.rb

class CartItem < ActiveRecord::Base
    attr_reader :product_id, :quantity

    def initialize product_id, quantity = 1
        @product_id = product_id
        @quantity = quantity
    end

    def increment
        @quantity = @quantity + 1
    end

    def product
        Product.find product_id
    end

    def total_price
        product.price * quantity    
    end


end
def initialize_cart
    @cart = Cart.build_from_hash session
end
def build_order_items
    @cart.items.each do |item|
        @order.order_items.create! product_id: item.product_id, quantity: item.quantity
    end

您的CartItem的
产品
方法仍然单独使用
.find
方法,当您输入字符串作为参数而不是数字ID时,该方法可能会引发错误。请尝试将其修改为使用
.friendly.find


希望这有帮助

从散列会话生成Cart.build是什么?什么是
Cart
实现?您在哪一行得到您提到的错误?它来自订单模型,我将补充到问题中