我的构建应用程序出现问题。
products/show.html.erb
中的我有这个代码将产品添加到购物车。
<%= button_to product_items_path(product_id: product) do %>
<i class="fa fa-shopping-cart"></i>Add to Cart
<% end %>
它总是给我这个错误undefined local variable or method 'product' for #<#<Class:0x007fe77c4f3c68>:0x007fe77c69cb78>
这个错误发生在第一行根据Better Error gem
我正在使用ActiveAdmin,但我很确定错误没有出现因为这个。
我不确定为什么会发生这种情况,对我而言,代码似乎很好,但我必须监督某些事情。
如果有人可以看一眼,也许看到我没看到的东西,那就太好了。
这是`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
这是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
端
这是routes.rb
文件
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'
答案 0 :(得分:2)
视图只能使用实例变量。
def create
@product = Product.find(params[:product_id]) # Prefix variable name with @
@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
您的观点:
<%= button_to product_items_path(@product) do %>
<i class="fa fa-shopping-cart"></i>Add to Cart
<% end %>
您应该能够将对象传递给_path助手。