1

i am working on Order app with cart and line_items in it. Facing problem while deleting line_item in cart. On clicking remove item, nothing happens. Can anyone tell, where i am going wrong? My cart.html.erb in orders

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

My orders controller have:

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

And i have defined delete item method in line_items controller:

 def destroy
             line_item.destroy
             redirect_to cart_orders_path
 end

Order model is:

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

Line item model is:

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

Can anyone help me?

4

3 に答える 3

1

コードに複数の矛盾があります。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

まず、破壊したいオブジェクトを見つけます

def destroy
  line_item = LineItem.find(params[:id])
  line_item.destroy
  redirect_to cart_orders_path
end
于 2013-02-05T08:17:34.083 に答える
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 に答える