更改 rails 中帖子的默认顺序

Changing default order of posts in rails

我有一个类似 rails 应用程序的博客,带有 posts。 post 可以按最受欢迎或最新排序。最受欢迎的是默认订单和主页,我想将其更改为最新订单。由于我对 rails 还是很陌生,所以我聘请了一名程序员来完成大部分工作,但我知道这是一个非常简单的修复,我只是不知道要更改什么。我认为我需要在 post_controller 或 post 模型中更改某些内容,但如果您需要查看其他内容,请告诉我,我会提出来的。

post.rb

class Post < ActiveRecord::Base
 include UrlHelp

   def self.highest_voted
  self.order(:cached_votes_down)
 end
end

post_controller.rb

 def index
 @posts = grab_correct_post
 end

def grab_correct_post
  if params[:sort_by] == "added_on"
  @added_on = "sort-active"
  Post.all.order("created_at DESC").paginate(page: params[:page],  per_page: 7)
else
  @most_popular = "sort-active"
  Post.all.order(:cached_votes_score =>:desc).paginate(page: params[:page], per_page: 7)
   end

如果您查看用于交换排序顺序的选择器并获得为最流行发送的 sort_by 值,那么您可以将 grab_correct_post 更改为以下内容以更改默认值

def grab_correct_post
  if params[:sort_by] == "<sort_by_value_for popular>"
    @most_popular = "sort-active"
    Post.all.order(:cached_votes_score =>:desc).paginate(page: params[:page], per_page: 7)
  else
    @added_on = "sort-active"
    Post.all.order("created_at DESC").paginate(page: params[:page],  per_page: 7)
  end
end

看来您可以颠倒 grab_correct_post 方法中 if-else 块的顺序:

def grab_correct_post
  if params[:sort_by] == "most_popular"
    @most_popular = "sort-active"
    Post.all.order(:cached_votes_score =>:desc).paginate(page: params[:page], per_page: 7)
  else
    @added_on = "sort-active"
    Post.all.order("created_at DESC").paginate(page: params[:page],  per_page: 7)
  end
end

请注意,我只是猜测 :sort_by 参数值应该是多少,以便按受欢迎程度排序,因此请务必将 "most_popular" 更改为您实际使用的值。