加分題 根據投票分數排序

Published on:

一開始參考 6-4 文章应该按照发表时间倒序排列 https://fullstack.xinshengdaxue.com/posts/78
http://guides.rubyonrails.org/active_record_querying.html 查到應該要用
topic.votes.count去做
但是不知道代碼到底怎麼寫,直接抄學長姐的答案但還是不太懂
大致了解應該是應用了2-1 基础 Ruby
https://fullstack.xinshengdaxue.com/posts/34
解法一
直接修改views/topics/index/html.rb

下那一行代码改成:

<% @topics.sort_by {|topic| -topic.votes.count}.each do |topic| %>
topic.votes.count是按照投票总数从小到大排列,加一个-,就是相反的排序。

解法二
在/app/controllers/topics_controller.rb中的index里增加一句排序的语句。

@topics = @topics.sort_by{ |topic| topic.votes.count }.reverse
修改完是这样的:

def index
@topics = Topic.all
@topics = @topics.sort_by{ |topic| topic.votes.count }.reverse
end

解法三
學長姐的網誌 一步一步教,很清楚,但比較麻煩
加入新的欄位記錄每個topics的總votes,取出資料時再排序
http://lesley.logdown.com/posts/736430-rails-beginners-the-practice-of-lu-series-railsbridge

Comments

comments powered by Disqus