【问题标题】:Unable to update quantity attribute无法更新数量属性
【发布时间】:2016-04-20 14:26:46
【问题描述】:

我正在开发一个活动列表/票务应用程序。一切正常,直到我在控制器中更改了一行,现在我无法将相同的事件两次添加到我的购物车中。我得到“2:Fixnum 的未定义方法‘保存’”

Caritem 控制器

定义创建

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模型的sn-p 类购物车

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

【问题讨论】:

    标签: ruby-on-rails-4


    【解决方案1】:

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

    这就是为什么当你已经有一个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
    

    一切都应该正常工作:)

    【讨论】:

    • 成功了吗?我的回答有什么遗漏吗?
    猜你喜欢
    • 1970-01-01
    • 2019-07-06
    • 2017-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    • 2015-04-12
    • 1970-01-01
    相关资源
    最近更新 更多