0
我正在嘗試對提交索引進行排序。sort_by或從相關模型中按行排序
每個提交has_one :score
和得分belongs_to :submission
提交belongs_to :contest
和競賽has_many :submissions
我要排序的列在提交submission.score.subtotal
>指數
我已經試過這樣:
@submissions = submission.find(:all, :include => :score).sort_by { |s| s.scores.sub_total }.paginate(:per_page => 10, :page => params[:page])
我有在第一場比賽中爲所有參賽作品分配了分數,但是當我嘗試提出參賽作品>比賽第一名時(通過參數分配) ,我得到一個錯誤:
NoMethodError at /submissions
undefined method `sub_total' for nil:NilClass
我很確定我需要檢查零的地方,但我錯過了那裏會。
的更多信息:
def index
contest_id = params[:contest_id]
@contest = Contest.find(contest_id)
submission = Submission.where(:contest_id => params[:contest_id])
if params[:search].blank?
@submissions = submission.find(:all, :include => :score).sort_by { |s| s.score.sub_total }.paginate(:per_page => 10, :page => params[:page])
else
@submissions = submission.search(params[:search]).paginate(:per_page => 10, :page => params[:page])
end
@search = params[:search]
end
獲取上一個錯誤:在'的ActiveRecord :: StatementInvalid /提交 PG ::錯誤:錯誤:缺少表格「得分」的FROM-clause條目 LINE 1:... id「WHERE」提交「。」contest_id「= 1 ORDER BY score.subt ... ^ :選擇「提交」。*從「提交」INNER JOIN「分數」ON「分數」。「submission_id」=「提交」。「id」WHERE「提交」。「contest_id」= 1 ORDER BY score.subtotal DESC'我在問題中添加了控制器信息,因爲有一個比賽.id參與,可能會丟掉查詢 –
對不起,我編輯了我的答案。它應該是「:order =>'scores.sub_total'」 –
好吧,這是有效的,除非它不會分頁:'NoMethodError在/提交 未定義的方法'paginate'爲#' –