我有一个像rails应用程序的帖子。这些帖子可以按最流行或最新的顺序排列。最受欢迎的是默认订单和主页,我喜欢将其更改为最新订单。由于我还很擅长使用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
答案 0 :(得分:1)
如果您查看选择器以交换排序顺序并获取最常用的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
答案 1 :(得分:1)
看起来您可以在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"
更改为实际使用的任何值。