2015-05-01 3 views
1

Я работаю с Spree, но я не полностью знаком со встроенными методами. Я пытаюсь сделать так, чтобы, когда params [: quantity] == 0, экземпляр line_item удаляется и удаляется из заказа. Я пробовал называть уничтожить! на экземпляре, но это не сработало, а также некоторые другие функции сборки.Как удалить экземпляр LineItem из заказа (Spree)

def update 
    @order = current_order 
    @line_item = Spree::LineItem.find(params[:id]) 
    @line_item.quantity = params[:quantity] 
    @line_item.save 
    # can't figure out a way to remove line_item when quantity is set to zero 
    @order.update! 

    respond_with(@order) do |format| 
    format.json{render json: @order} 
    end 
end 

Любая помощь приветствуется, спасибо заранее!

ответ

2

Вы сделали почти правильный. он требует коррекции в вашем коде следующим образом:

def update 
    @order = current_order 
    @line_item = Spree::LineItem.find(params[:id]) 
    @line_item.quantity -= params[:quantity] 
    if @line_item.quantity == 0 
    @line_item.destroy 
    else 
    @line_item.save! 
    end 
    respond_with(@order) do |format| 
    format.json{render json: @order} 
    end 
end 
Смежные вопросы