Ich habe ein Problem mit einer App, die ich gerade erstelle.undefinierte lokale Variable oder Methode `Produkt 'für # <# <Klasse: 0x007fe77c4f3c68>: 0x007fe77c69cb78>
in products/show.html.erb
Ich habe diesen Code, um das Produkt in den Warenkorb legen.
<%= button_to product_items_path(product_id: product) do %>
<i class="fa fa-shopping-cart"></i>Add to Cart
<% end %>
Und es gibt mir immer diesen Fehler undefined local variable or method 'product' for #<#<Class:0x007fe77c4f3c68>:0x007fe77c69cb78>
Dieser Fehler wird in der ersten Zeile geschieht nach besseren Fehler gem
Ich bin mit ActiveAdmin aber ich bin mir ziemlich sicher, dass der Fehler ist nicht erscheinen deswegen.
Ich bin nicht sicher, warum das passiert, mir scheint der Code gut, aber ich muss etwas beaufsichtigen.
Es wäre toll, wenn jemand mal gucken könnte und vielleicht sehen würde, was ich nicht sehe.
Dies ist die `ProductItemsController.rb``
class ProductItemsController < ApplicationController
include CurrentCart
before_action :set_cart, only: [:create]
before_action :set_product_item, only: [:show, :destroy]
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
private
def set_product_items
@product_item = ProductItem.find(params[:id])
end
def product_item_params
params.require(:product_item).permit(:product_id)
end
end
Und hier ist der ProductsController.rb
class ProductsController < ApplicationController
before_action :set_product, only: [:show, :edit, :update, :destroy]
def show
end
private
def set_product
@product = Product.find(params[:id])
end
def product_params
params.require(:product).permit(:name, :description, :price_usd, :price_isl, :image, :category_id)
end
Ende
dies die routes.rb
Datei
Rails.application.routes.draw do
resources :categories
resources :labels
resources :products
resources :carts
resources :product_items
devise_for :admin_users, ActiveAdmin::Devise.config
ActiveAdmin.routes(self)
root 'pages#index'
Es muss eine Instanzvariable sein, auf die über die Ansicht zugegriffen werden kann. ('@ Produkt' statt' Produkt' an beiden Stellen) – Ven