diff --git a/app/controllers/shixuns_controller.rb b/app/controllers/shixuns_controller.rb index f4bbc6ad8..d9a46da0a 100644 --- a/app/controllers/shixuns_controller.rb +++ b/app/controllers/shixuns_controller.rb @@ -243,8 +243,8 @@ class ShixunsController < ApplicationController @order = params[:order] || "myshixun_count" bsort = params[:sort] || "desc" @sort = bsort == "desc" ? "asc" : "desc" - if @order == "created_at" - order_str = "#{Shixun.table_name}.created_at #{bsort}" + if @order == "updated_at" + order_str = "#{Shixun.table_name}.updated_at #{bsort}" else order_str = "myshixun_count #{bsort}, #{Shixun.table_name}.updated_at #{bsort}" end @@ -300,7 +300,7 @@ class ShixunsController < ApplicationController when nil, "0" @shixuns = @shixuns end - if @order == "created_at" + if @order == "updated_at" @shixuns =@shixuns.reorder(order_str) else # 最热排序 diff --git a/app/controllers/subjects_controller.rb b/app/controllers/subjects_controller.rb index f14ec8017..45575406f 100644 --- a/app/controllers/subjects_controller.rb +++ b/app/controllers/subjects_controller.rb @@ -8,12 +8,17 @@ class SubjectsController < ApplicationController include ApplicationHelper def index - @order = params[:order] || "updated_at" - bsort = params[:sort] || "asc" + @order = params[:order] || "myshixun_count" + bsort = params[:sort] || "desc" @sort = bsort == "desc" ? "asc" : "desc" search = params[:search] #ids = Subject.find_by_sql("select group_concat(id) as allId from subjects where id in (SELECT distinct(subject_id) FROM `stages`)") - @subjects = Subject.where("hidden = 0").reorder("#{@order} #{bsort}") + if @order == "myshixun_count" + #@shixuns = @shixuns.select("shixuns.*, (select count(myshixuns.id) from myshixuns where myshixuns.shixun_id = shixuns.id group by shixuns.id) AS myshixunCount").reorder("status = 2 desc, myshixunCount desc") + @subjects = Subject.where("hidden = 0").select("subjects.*, (select count(myshixuns.id) from myshixuns, stage_shixuns where myshixuns.shixun_id = stage_shixuns.shixun_id and stage_shixuns.subject_id = subjects.id group by subjects.id) AS myshixunCount").reorder("status = 2 desc, myshixunCount #{bsort}") + else + @subjects = Subject.where("hidden = 0").reorder("#{@order} #{bsort}") + end @subject_created_count = Subject.where(:user_id => User.current.id).count @subjects_all_count = @subjects.count #@subjects = Subject.where("name like ?", "%#{search}%").reorder("#{@order} #{@sort}") diff --git a/app/models/subject.rb b/app/models/subject.rb index 7eb102bf5..fc4fa393c 100644 --- a/app/models/subject.rb +++ b/app/models/subject.rb @@ -35,6 +35,15 @@ class Subject < ActiveRecord::Base count end + def subject_users + count = 0 + self.stage_shixuns.each do |stage_shixun| + shixun = stage_shixun.shixun + count += shixun.myshixuns.count + end + count + end + def subject_score score = 0 self.stage_shixuns.each do |stage_shixun| diff --git a/app/views/subjects/_subject_list.html.erb b/app/views/subjects/_subject_list.html.erb index 6bca42ab6..908af0a9e 100644 --- a/app/views/subjects/_subject_list.html.erb +++ b/app/views/subjects/_subject_list.html.erb @@ -1,9 +1,9 @@ @@ -43,8 +43,8 @@ <% if subject.subject_score > 0 %> <%= subject.subject_score %> <% end %> - <% if subject.subject_challenges > 0 %> - <%= subject.subject_challenges %> + <% if subject.subject_users > 0 %> + <%= subject.subject_users %> <% end %>