Rails: ActiveRecord::RecordNotFound 在购物车中
Rails: ActiveRecord::RecordNotFound in Cart
我为所有项目使用 friendly_id。我在 cart.rb 模型中收到错误消息 .. Couldn't find Product with 'id'=the-pen
我不确定该怎么做。任何帮助将不胜感激
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
ApplicationController.rb
def initialize_cart
@cart = Cart.build_from_hash session
end
OrderForm.rb
def build_order_items
@cart.items.each do |item|
@order.order_items.create! product_id: item.product_id, quantity: item.quantity
end
您的 CartItem 的 product
方法本身仍然使用 .find
方法,这可能会在您输入字符串而不是数字 ID 作为参数时抛出错误。尝试将其修改为使用 .friendly.find
。
希望对您有所帮助!
我为所有项目使用 friendly_id。我在 cart.rb 模型中收到错误消息 .. Couldn't find Product with 'id'=the-pen
我不确定该怎么做。任何帮助将不胜感激
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
ApplicationController.rb
def initialize_cart
@cart = Cart.build_from_hash session
end
OrderForm.rb
def build_order_items
@cart.items.each do |item|
@order.order_items.create! product_id: item.product_id, quantity: item.quantity
end
您的 CartItem 的 product
方法本身仍然使用 .find
方法,这可能会在您输入字符串而不是数字 ID 作为参数时抛出错误。尝试将其修改为使用 .friendly.find
。
希望对您有所帮助!