Когда я пытаюсь добавить продукты в корзину в приложении, которое я создаю, я всегда получаю эту ошибку Couldn't find Product with 'id'=
. Согласно Better Errors это происходит в первой строке метода Create в моем product_items_controller.rb
, как показано ниже.Не удалось найти продукт с «id» = при добавлении продуктов в корзину в приложении Rails
def create
@product = Product.find(params[:product_id])
@product_item = @cart.add_product(product.id)
if @product_item.save
redirect_to root_url, notice:'Product added to Cart'
else
render :new
end
end
Я изменил первую строку: @product = Product.find(params[:id])
, но это не исправить ошибку.
Ранее сегодня я изменил код Add to Cart
кнопки от: <%= button_to product_items_path(product_id: product) do %>
до <%= button_to product_items_path(@product) do %>
Это код Добавить в корзину кнопки, как сейчас.
<%= button_to product_items_path(@product) do %>
<i class="fa fa-shopping-cart"></i>Add to Cart
<% end %>
UPDATE, ADDED routes.rb
вот routes.rb
Rails.application.routes.draw do
resources :categories
resources :labels
resources :products
resources :carts
resources :product_items
resources :orders
devise_for :admin_users, ActiveAdmin::Devise.config
ActiveAdmin.routes(self)
root 'pages#index'
end
ДРУГОЙ EDIT
вот cart.rb
, который держит метод add_product
class Cart < ActiveRecord::Base
has_many :product_items, dependent: :destroy
def add_product(product_id)
current_item = product_items.find_by(product_id: product_id)
if current_item
current_item.quantity += 1
else
current_item = product_items.build(product_id: product_id)
end
current_item
end
def total_price_usd
product_items.to_a.sum{|item| item.total_price_usd}
end
def total_price_isl
product_items.to_a.sum{|item| item.total_price_isl}
end
end
UPDATE
здесь ссылка на GitHub репо https://github.com/DadiHall/hlinreykdal
Я создал весь продукт с помощью активного администратора, и это работает, как он должен работать. Я что-то упустил? Я не могу понять, почему эта ошибка продолжается.
К какому действию относится маршрут 'product_items_path (@product)' map? Можете ли вы разместить свои маршруты.rb? А что такое '@ cart' и' product' внутри 'create'? –
Привет, я добавил route.rb и cart.rb .... метод add_product находится в cart.rb – DaudiHell
Что такое 'product' во второй строке' create' action? –