【Rails】購入頻度順のランキングを作る(1位から5位までの表示あり!)

まずは、商品の購入頻度が多い順で上位5つのみを表示するランキングを作ります。

def index
    # 商品を人気順にランキングで5つだけ表示
    @rank_products = Product.find(OrderDetail.group(:product_id).order('count(product_id) desc').limit(5).pluck(:product_id))
end

次に、ビューの方で表示します。
先ほど作った「@rank_products」を使い、かつ「with_index(1)」とする事で、1から順にeachするたびに数字を増やして表示することができます。
つまりは、人気の商品を1位〜5位という表示を含めてビューに表示できます。

<% @rank_products.each.with_index(1) do |product, i| %>
  <h6>第<%= i %>位</h6>
  <%= link_to product_path(product) do %>
    <%= attachment_image_tag product, :image, :fill, 120, 120, fallback: "pic_default/no-image.jpg", size:'120x120' %>
  <% end %>
  <h6>
    <%= link_to product_path(product) do %>
      <%= product.name %>
    <% end %>
  </h6>
  <p><%= product.add_tax_price.to_s(:delimited) %> 円</p>
  <%= link_to "詳細をみる", product_path(product) %>
<% end %>
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次