1

我正在开发带有购物车和 line_items 的 Order 应用程序。删除购物车中的 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

谁能帮我?

4

3 回答 3

1

您的代码中有多个不一致之处。一方面,我不知道您是否只是缺少一段代码,但您没有加载要删除的 line_item:

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

其次,您在销毁链接上指定 :remote => true ,这会打开 AJAX 模式,但随后您只需在销毁操作中重定向。

于 2013-02-05T08:17:20.357 回答
0
  1. 你有 line_item.destroy 的路线吗?请告诉我们您的路线。
  2. 当你按下“删除项目”时你会调用destroy方法吗?执行类似的
    def destroy
      print "Line item destroy method called"
      line_item.destroy
      redirect_to cart_orders_path
    end
    
    操作,然后尝试单击“删除项目”链接。是否在您的服务器日志中打印了字符串“Line item destroy method called”?
于 2013-02-05T08:29:59.853 回答
0

首先找到要销毁的对象

def destroy
  line_item = LineItem.find(params[:id])
  line_item.destroy
  redirect_to cart_orders_path
end
于 2013-02-05T08:17:34.083 回答