我希望能够显示帖子并按几个标准对它们进行排序,首先是它们的投票数量,其次是它们的创建日期。我不希望显示一周以上的帖子,因此只显示上周的帖子。我尝试这样做:
<%= render @posts.sort_by { |post| post.votes.count if post.created_at < 1.week.ago.utc }.reverse %>
但它给了我一个 NilClass 与 2 比较失败的错误
我知道代码的工作原理只是按投票数对帖子进行排序,但我也想限制时间,所以有人可以告诉我如何做到这一点。我还是个新手,很抱歉这么简单。
@Salil 的解决方案是好的,但我建议添加 counter_cache 列(http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html)并改变recent_post
代码(来自此评论:https://stackoverflow.com/a/11498634/1392074 https://stackoverflow.com/a/11498634/1392074 ) into:
def self.recent_posts
Post.where("created_at >= ?", 1.week.ago.utc).order("votes_count DESC, created_at DESC")
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)