无法更新数量属性

时间:2016-01-15 02:40:59

标签: ruby-on-rails-4

我正在制作一个活动列表/票务应用。一切都工作正常,直到我在控制器中更改了一行,现在我不能将同一事件两次添加到我的购物车中。我得到了"未定义的方法`save' 2:Fixnum"

Cartitem控制器

def create

event = Event.find(params[:event_id])
@cartitem = @cart.add_event(event.id)
respond_to do |format|
  if @cartitem.save
    format.html {redirect_to store_url}
    format.json { render :show, status: :created, location: @cartitem }
  else
    format.html { render :new }
    format.json { render json: @cartitem.errors, status: :unprocessable_entity }
  end
end

以下是add_event方法所在的Cart模型的片段 class Cart<的ActiveRecord :: Base的     has_many:cartitems,dependent :: destroy

def add_event(event_id)
    current_item = cartitems.find_by(event_id: event_id)
    if current_item
        current_item.quantity += 1
    else
        current_item = cartitems.build(event_id: event_id)
    end
end

1 个答案:

答案 0 :(得分:0)

这是因为方法总是返回执行的最后一行

这就是为什么当你已经拥有 current_item 时,你执行的最后一个命令是current_item.quantity += 1,它返回值2

你应该做的是:

def add_event(event_id)
    current_item = cartitems.find_by(event_id: event_id)
    if current_item
        current_item.quantity += 1
    else
        current_item = cartitems.build(event_id: event_id)
    end
    current_item
end

并且一切都应该正常工作:)