我想使用where
方法更新数据库记录。
我这样做:
def AjoutAuPanier
@book = Book.find(params[:id])
if @book.nbr_exemplaires > 0
@p = Panier.where(user_id: current_user, book_id: @book.id)
if @p.empty? == false
@p.update(@p.id, quantity: @p.quantity + 1)
else
@p = Panier.new(user_id: current_user.id , book_id: @book.id , price: @book.price, quantity: 1)
end
if @p.save
@book.update(nbr_exemplaires: @book.nbr_exemplaires-1)
redirect_to detail_path
else
redirect_to books_list_path
end
else
flash[:notice]='Ce livre n\'est plus disponible'
redirect_to books_list_path
end
end
然而,这会产生以下错误:
#
的未定义方法`id'
答案 0 :(得分:0)
@p=Panier.where(user_id: current_user, book_id: @book.id)
您必须添加.first
,因为.where
始终返回数组
@p=Panier.where(user_id: current_user, book_id: @book.id).first