Rails:商品未从购物车中移除

时间:2013-02-05 08:07:18

标签: ruby-on-rails cart

我正在处理带有购物车和line_items的订单应用。在购物车中删除line_item时遇到问题。在单击删除项目时,没有任何反应。谁能说出来,我哪里错了? 我的订单中的cart.html.erb

<% @order.line_items.each do |item| %>
      <%= link_to "remove item", item, :method => :delete, :confirm => "Are you sure?",:remote => true %>
<% end %>

我的订单管理员有:

def cart
    @order = current_or_guest_user.orders.includes(:line_items=>[:product]).last
end

我在line_items控制器中定义了删除项方法:

 def destroy
             line_item.destroy
             redirect_to cart_orders_path
 end

订单模型是:

belongs_to :user
attr_accessible :completed_at, :email, :item_total, :number, :payment_state, :payment_total, :special_instructions, :state, :total
has_many :line_items, :dependent => :destroy

订单项模型是:

belongs_to :product
belongs_to :order
attr_accessible :price, :quantity, :product_id

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

您的代码中存在多个不一致。首先,我不知道您是否只是丢失了一段代码,但是您没有加载要删除的line_item:

def destroy
         @line_item = LineItem.find(params[:id])
         @line_item.destroy
         redirect_to cart_orders_path
end

其次,您指定:remote =&gt;在您的销毁链接上为true,这会启用AJAX模式,但之后您只需在您的销毁操作中重定向。

答案 1 :(得分:0)

首先找到要销毁的对象

def destroy
  line_item = LineItem.find(params[:id])
  line_item.destroy
  redirect_to cart_orders_path
end

答案 2 :(得分:0)

  1. 你有line_item.destroy的路线吗?请告诉我们你的路线。
  2. 按“删除项目”时是否调用destroy方法?做
    def destroy
      print "Line item destroy method called"
      line_item.destroy
      redirect_to cart_orders_path
    end
    
    之类的事情 然后尝试单击“删除项目”链接。是否在服务器日志中打印了“调用行项目销毁方法”字符串?