HomeController 显示未定义方法的问题
Issue with HomeController showing undefined method
我正在尝试将 stored_products 从 shopify 传递到 Rails 应用程序,但在 https://f588240c.ngrok.io/ 处不断收到家庭控制器错误 我已经进行了更新,但没有成功并重新启动了服务器多次失败。
欢迎任何帮助。这是代码
class Api::V1::HomeController < ShopifyApp::AuthenticatedController
def index
@products = ShopifyAPI::Product.find(:all, params: { limit: 10 })
@products.each do |product|
StoredProduct.where(shopify_id: product.id)
.first_or_create do |stored_product|
stored_product.shopify_id = product.id
stored_product.shopify_title = product.title
stored_product.shopify_handle = product.handle
stored_product.shopify_image_url = product.image.src
stored_product.shop_id = @shop.id
stored_product.save
product.images.each do |image|
ProductImage.where(shopify_id: image.id)
.first_or_create do |product_image|
product_image.image_url = image.src
product_image.stored_product_id = stored_product_id
product_image.shopify_id = image.id
end
end
end
end
@stored_products = StoredProduct.belongs_to_shop(@shop.id)
end
end
来自经过身份验证的控制器
private
def set_shop
@shop = Shop.find_by(id: session[:shopify])
set_locale
end
来自 store_products.rb 文件
class StoredProduct < ApplicationRecord
belongs_to :shop
has_many :product_images
scope :belongs_to_shop, -> shop_id { where(shop_id: shop_id) }
end
问题是 @shop
为零。错误信息说它不能在 NilClass.
上调用方法 .id
在图片中,我可以看到您的参数中有一个 shop_id,因此您可能只需要在此处更改代码:
def set_shop
@shop = Shop.find_by(id: params[:shop_id])
set_locale
end
但这取决于您的代码,因此请仔细检查。
对于这个特定的 issue/code 教程,私有 set_shop 方法应该设置如下:
def set_shop
@shop = Shop.find_by(id: session[:shop_id])
set_locale
end
另一个答案有 params
而不是 session
我正在尝试将 stored_products 从 shopify 传递到 Rails 应用程序,但在 https://f588240c.ngrok.io/ 处不断收到家庭控制器错误 我已经进行了更新,但没有成功并重新启动了服务器多次失败。
欢迎任何帮助。这是代码
class Api::V1::HomeController < ShopifyApp::AuthenticatedController
def index
@products = ShopifyAPI::Product.find(:all, params: { limit: 10 })
@products.each do |product|
StoredProduct.where(shopify_id: product.id)
.first_or_create do |stored_product|
stored_product.shopify_id = product.id
stored_product.shopify_title = product.title
stored_product.shopify_handle = product.handle
stored_product.shopify_image_url = product.image.src
stored_product.shop_id = @shop.id
stored_product.save
product.images.each do |image|
ProductImage.where(shopify_id: image.id)
.first_or_create do |product_image|
product_image.image_url = image.src
product_image.stored_product_id = stored_product_id
product_image.shopify_id = image.id
end
end
end
end
@stored_products = StoredProduct.belongs_to_shop(@shop.id)
end
end
来自经过身份验证的控制器
private
def set_shop
@shop = Shop.find_by(id: session[:shopify])
set_locale
end
来自 store_products.rb 文件
class StoredProduct < ApplicationRecord
belongs_to :shop
has_many :product_images
scope :belongs_to_shop, -> shop_id { where(shop_id: shop_id) }
end
问题是 @shop
为零。错误信息说它不能在 NilClass.
.id
在图片中,我可以看到您的参数中有一个 shop_id,因此您可能只需要在此处更改代码:
def set_shop
@shop = Shop.find_by(id: params[:shop_id])
set_locale
end
但这取决于您的代码,因此请仔细检查。
对于这个特定的 issue/code 教程,私有 set_shop 方法应该设置如下:
def set_shop
@shop = Shop.find_by(id: session[:shop_id])
set_locale
end
另一个答案有 params
而不是 session