我想要什么:
如果@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 %>
我知道我做错了,但这确实说明了我正在尝试做的事情。在这种情况下,首选的方法是什么?
答案 0 :(得分:1)
如果我错了,请纠正我。
@current_products
为空,则要显示所有产品。@current_products
不为空,则显示@current_products
+数据库中所有剩余的产品,也就是所有产品。只有顺序会有所不同。如果要将两组产品放在单独的变量中:
# 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 %>
除非@current_products
和ShopifyAPI::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
模型的查询类似。