Уберите товары из корзины и добавьте это количество обратно в stock_quantity (rubyonrails) - PullRequest
0 голосов
/ 02 октября 2018

Я пытаюсь построить магазин, но у меня возникает ошибка после удаления моих товаров из корзины, но я пытаюсь добавить cart.items.quantity обратно в product.stock_quantity.Это сообщения об ошибках:

NoMethodError in CartsController#remove
undefined method `quantity' for {"product_id"=>"1", "quantity"=>21}:Hash

.

Routing Error
No route matches [GET] "/cart/destroy/1"

Вот важная часть моего carts_controller:

    def remove
    cart = session['cart']
    item = cart['items'].find { |item| item['product_id'] == params[:id] }

    product = Product.find(item['product_id'])

    product.update_columns(stock_quantity: product.stock_quantity + item.quantity)

    if item
        cart['items'].delete item
    end
  redirect_to cart_path
end

Если я изменю item.quantity до +1, все работает отлично.Но я на самом деле хочу добавить отверстие cart.item.quantity обратно в stock_quantity.Вот файл маршрутов:

Rails.application.routes.draw do
resources :stockists
post 'emaillist/subscribe' => 'emaillist#subscribe'
get 'products/search' => 'products#search', as: 'search_products'
get 'pages/index'
get 'pages/about'
get 'pages/help'
devise_for :users
resources :categories
resources :categories
resources :designers
resources :category_names
resources :products
resource :cart, only: [:show] do
post "add", path: "add/:id", on: :member
delete 'remove', path: 'destroy/:id'
get :checkout
end
resources :orders, only: [ :index, :show, :create, :update ] do
member do
get :new_payment
post :pay
end
end

У кого-нибудь есть идеи?

1 Ответ

0 голосов
/ 02 октября 2018

Как показывает ошибка, item - это hash.Таким образом, вы не можете позвонить item.quantity.Вместо этого попробуйте item[:quantity].

Кстати, публикация изображений сообщений об ошибках считается (IMO) плохой формой.Людям может быть трудно просматривать изображение на различных устройствах (например, телефонах).Кроме того, с изображением мы не можем скопировать и вставить соответствующий код, чтобы помочь ответить на ваш вопрос.Лучше, если вы скопируете и вставите ошибку в свой вопрос.

...