rails shoppe gem:无法按订单添加产品

时间:2016-03-26 19:59:50

标签: ruby-on-rails ruby ruby-on-rails-4 e-commerce

我正在开发一个将使用shoppe gem作为电子商务引擎的网站,而我在向现有订单添加或删除项目时遇到问题。用户应该能够查看他们的订单,然后在每个订单项旁边,会有一个加号和一个减号。单击时,加号应在订单中添加一个相同类型的项目,同样,减号应在单击时删除项目。我有以下代码的两个链接:

link_to "+", adjust_order_item_quantity_path(item.id), :method => :post
link_to "-", adjust_order_item_quantity_path(item.id), :method => :delete

我的路线看起来像这样:

post 'orders/change_item_quantity/:order_item_id', to: 'orders#change_item_quantity', :as => 'adjust_order_item_quantity'
delete 'orders/change_item_quantity/:order_item_id', to: 'orders#change_item_quantity'

我的订单控制器的代码是:

def change_item_quantity
   item = current_order.order_items.find(params[:order_item_id])
   request.delete? ? item.decrease! : item.increase!
   if item.quantity == 0
      redirect_to "#", :notice => "#"      
   else
      redirect_to request.referer
end 
rescue Shoppe::Errors::NotEnoughStock => e
   respond_to do |wants|
      wants.html { redirect_to request.referer }
   end
end 

这些代码大部分都是在专柜教程网站上给出的示例代码,但我无法让它正常工作。当我点击' +'时,我收到一条错误消息:

Couldn't find Shoppe::OrderItem with 'id'=[nil] [WHERE `shoppe_order_items`.`order_id` = ?] 

当我点击' - '时,会删除一个项目,但是当我点击' - '时,我会收到与上面相同的错误消息。当只剩下一个项目时。我真的很感激你的帮助!

提前致谢!

修改

这是我的应用程序跟踪:

1 def change_item_quantity
2    item = current_order.order_items.find(params[:order_item_id])
3    request.delete? ? item.decrease! : item.increase!
4    if item.quantity == 0
5       redirect_to root_path   

问题在于这一行:

item = current_order.order_items.find(params[:order_item_id])

1 个答案:

答案 0 :(得分:0)

看起来你的order_item_id参数在某些时候会丢失。一般来说你应该 包含问题的完整错误跟踪,因为它会告诉您哪行代码 导致错误。

虽然有一些阅读错误的经验,但我可以告诉你 Couldn't find <ModelName>错误通常是由使用标识错误的find引起的。

所以以下几行是失败的:

item = current_order.order_items.find(params[:order_item_id])

您的观看代码对我来说很好,而且我不确定您需要更改为 修复此错误。我要做的是在change_item_quantity的开头设置一个断点 方法并确保已设置params[:order_item_id]。如果不是,那很可能 您的视图代码(link_to)存在问题。

也许item.id在您的链接中为零。检查您的HTML并确保ERB已进入 ID正确。