如何显示当前表中的产品以及Shopify中的产品(如果唯一)

时间:2018-07-06 13:04:49

标签: ruby shopify

我想要什么:

如果@current_products为空,则在Shopify商店中显示@new_products。但是,如果@current_products不为空,则显示@current_products并附加Shopify商店中任何唯一的@new_products。我通过product.id定义了一个独特的产品。

到目前为止,我是这种尝试:

 if @current_products.empty?            
   @new_products = ShopifyAPI::Product.find(:all)
 elsif
   @current_products.each_with_index do |u, index|        
     if index == @current_products.size       
        @new_products = ShopifyAPI::Product.find(:all)                  
        @new_products.delete_if do |product|
            if product.id.in?(@productIds)      
                true 
            end 
        end  
     end        
  end
 end

然后我的erb使用:

<% @current_products.each do |item| %>
      ...
<% end %>

<% @new_products.each do |item| %>
      ...
<% end %> 

我知道我做错了,但这确实说明了我正在尝试做的事情。在这种情况下,首选的方法是什么?

1 个答案:

答案 0 :(得分:1)

如果我错了,请纠正我。

  • 如果@current_products为空,则要显示所有产品。
  • 如果@current_products不为空,则显示@current_products +数据库中所有剩余的产品,也就是所有产品。只有顺序会有所不同。

方法1

如果要将两组产品放在单独的变量中:

# Controller
@current_products = wherever_they_come_from
@new_products = ShopifyAPI::Product.where('id NOT IN (?)', @current_products.pluck(:product_id))

# View
<% @current_products.each do |product| %>
  <!-- Render product -->
<% end %>

<% @new_products.each do |product| %>
  <!-- Render product -->
<% end %>

方法2

除非@current_productsShopifyAPI::Product中的产品要显示相同的属性,否则不建议使用

如果您希望两组产品使用单独的变量:

# Controller
@current_products = wherever_they_come_from
@current_products |= ShopifyAPI::Product.where('id NOT IN (?)', @current_products.pluck(:product_id))

# View
<% @current_products.each do |product| %>
  <!-- Render product -->
<% end %>

注意:我假设ShopifyAPI模型的行为与ActiveRecord模型的查询类似。