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