我正在尝试添加发票并同时从购物车中删除所以我使用购物车控制器中的方法来做这件事但我得到了这个错误但是当我刷新错误消失了,我不明白为什么。我确定我很糟糕地开发了这种方法,但我不知道如何不同地进行。这是我的代码:
in paniers_controller(cart for cart)
def confirm
@panier =Panier.find(params[:id])
@facture= Facture.new(user_id: current_user.id, transaction_id: @panier.transaction_id, price: @panier.price, status: @panier.status, purchased_at: @panier.purchased_at )
if @facture.save
Panier.destroy(@panier.id)
flash[:notice]='Votre facture est validée'
redirect_to books_list_path
end
end
在routes.rb中:
post '/confirm/:id' => 'paniers#confirm', as: :facture_confirmation
in views / paniers / show.html.erb
<%=link_to 'confirmer',facture_confirmation_path(@panier) ,method: :post, class: 'btn btn-success' %>
该错误指的是
@ facture = Facture.new(user_id:current_user.id,transaction_id:@ panier.transaction_id,price:@ panier.price,status:@ panier.status,buying_at:@ panier.purchased_at)
更新
这就是我得到的错误:
Started POST "/confirm/51" for 127.0.0.1 at 2014-11-20 12:16:21 +0100
Processing by PaniersController#confirm as HTML
Parameters: {"authenticity_token"=>"2UFp7qnM6mykQWydeXYxVkO2om7WFIJKJDtejuaA6ZI=", "id"=>"51"}
Can't verify CSRF token authenticity
Panier Load (0.3ms) SELECT `paniers`.* FROM `paniers` WHERE `paniers`.`id` = 51 LIMIT 1
#<Panier id: 51, user_id: 6, created_at: "2014-11-20 11:12:30", updated_at: "2014-11-20 11:14:21", book_id: 13, price: 12, title: nil, quantity: 1, notification_params: nil, status: "Completed", transaction_id: "3TK45927AJ5784644", purchased_at: "2014-11-20 11:14:21">
Completed 500 Internal Server Error in 14ms
NoMethodError (undefined method `id' for nil:NilClass):