正在获取所有供应商的清单?

时间:2019-12-07 04:31:34

标签: ruby-on-rails ruby shopify shopify-app

我正在执行以下操作,将供应商从产品中剔除,并使用unique将其带到前端以列出商店中的每个供应商。

控制器:

@count = ShopifyAPI::Product.count
@n = 1
@products = ShopifyAPI::Product.find(:all, limit: 250, page: @n)
if (@count > 50) && params[:page_number]
  @page_number = params[:page_number].to_i
  @products = ShopifyAPI::Product.find(:all, params: {page: @page_number})
end

前端:

<% @products.map(&:vendor).uniq.each do |vendor| %>
...
...
<% end %>

<% if (@count > 50) && (@page_number.present? && @page_number > 1) %>
  <%= link_to "<", company_shop_vendors_path(shop_id: @shop.id, page_number: (@page_number - 1)) %> <%= link_to "1", company_shop_vendors_path(shop_id: @shop.id, page_number: 1) %> <%= link_to "#{@page_number + 1} >", company_shop_vendors_path(shop_id: @shop.id, page_number: (@page_number + 1)) %>
<% elsif (@count > 50) %>
  <%= link_to "#{@n+1} >", company_shop_vendors_path(shop_id: @shop.id, page_number: (@n += 1)) %>
<% end %>

这让我得到了供应商,但没有我想要的。

整个页面系统都是很糟糕的尝试,实际上我也使用搜索表单,这更好。在产品页面上分页只会使我在每个页面上都有唯一的供应商,而当有数百个页面时,这毫无意义。

最好的方法是什么?

也许有一种方法可以将所有供应商分页并将其扔到内存中,然后将它们唯一地显示在前端?

从那以后,唯一的选择是将供应商根据Product API请求存储在数据库中,然后Product创建webhook ---而不是直接使用API​​。

你怎么看?

3 个答案:

答案 0 :(得分:0)

您知道Shopify具有Liquid结构,可以在其中向您显示商店的所有供应商吗?

https://help.shopify.com/en/themes/liquid/objects/shop#shop-vendors

因此,您可以轻松地使用该地址通过应用代理将其发送给您的应用。比迭代产品和其他轨迹更为有效。

答案 1 :(得分:0)

令人毛骨悚然的方式,但可能会帮助那些不想浏览产品并且无法通过应用代理执行操作的人

  1. 请商家在其商店下访问以下网址
  

https:// {{shop_doamin}} / admin / products / vendors.json

这将以JSON格式列出所有产品供应商。

  1. 要求他们将此JSON放在文本框中,然后将此JSON保存在本地数据库中并从那里提供服务。

可能会中断自动化过程。但是当您不想遍历大数据时会很有帮助。

希望这些信息有意义并且可能会有所帮助。

答案 2 :(得分:0)

不是使用API​​来显示供应商---我确信有一种方法可以在将结果保存在内存中的同时可以做到这一点---我在产品和产品页面中循环浏览,并将供应商存储在数据库中,这样显示。如果允许用户添加新供应商,则允许他们“同步”他们的供应商。我没有实施webhooks只是为了防止有人使用错误的新供应商生产产品。