0

投稿のインデックスを並べ替えようとしています。

各提出物has_one :scoreとスコアbelongs_to :submissionの提出物belongs_to :contestとコンテストhas_many :submissions

ソートしたい行はsubmission.score.subtotalsubmissions>indexにあります

私はこれを試しました:

 @submissions = submission.find(:all, :include => :score).sort_by { |s| s.scores.sub_total }.paginate(:per_page => 10, :page => params[:page])

コンテスト 1 のすべての提出物にスコアを割り当てましたが、コンテスト 1 の提出物 > インデックス (params を介して割り当てられたもの) を表示しようとすると、エラーが発生します:

NoMethodError at /submissions
undefined method `sub_total' for nil:NilClass

どこかで nil をチェックする必要があると確信していますが、それがどこにあるかがわかりません。

詳しくは:

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
4

1 に答える 1

1

このコードは、必要なことを行う必要があります。

@submissions = Submission.find(:all, :joins => :score, :order => 'scores.sub_total DESC').paginate(:per_page => 10, :page => params[:page])

これがお役に立てば幸いです

于 2013-02-08T00:41:46.523 に答える