如何为大多数查看的帖子生成视图

How to generate a view for most viewed posts

我正在尝试在我的 rails 应用程序中生成过去 24 小时内观看次数最多的 8 个 post 的视图。我已经实现了一个查看计数器并且它正在工作,但我不知道如何找到 8 个查看次数最多的。我希望每个 post 都显示在其自己的按钮类型模块中。

这是我的图钉型号:

class Pin < ActiveRecord::Base
is_impressionable :counter_cache => true, :unique => true # view counter

belongs_to :user
end

如果有人能解释需要添加到我的引脚控制器的内容以及要添加到我的视图的内容,以便每个查看次数最多的引脚都显示在其自己的单独按钮中,我将不胜感激。

我假设您在网站的每个视图中更新 Pin 模型中的 impressions_count 列。

我会给你一个例子,假设你想在 Pin Controller 的索引操作中显示前 8 个最受欢迎的post:

controllers/pins_controller.rb

class PinsController < ApplicationController

  def index
    #You can use whether 1.days.ago or 24.hours.ago
    @top_eight_posts = Pin.where(updated_at: 1.days.ago..DateTime.now).order('impressions_count DESC').first(8)
  end

end

然后在您的索引视图中,或任何与控制器中的操作相匹配的视图中,您只需要执行一个 each 循环即可获得前 8 个 posts

views/pins/index.html.erb

<% @top_eight_posts.each do |post| %>
  <!-- Assuming Pin Post have a title -->
  <%= post.title %>
  <!-- Assuming Pin Post have a content -->
  <%= post.content %>
<% end %>

希望对您有所帮助!!

PD:更新了 24 小时过滤器