0

学生、成績などの列と、それぞれの日付(created_atの日付ではない)の列を含むテーブルがあります。私のモデルでは、学生は_多くのスコアを持ち、スコアは学生に属します_。ユーザーが生徒をクリックしたときに、[フィールド]列に入力された日付に基づいて、最新の成績と関連する日付のみを表示ページに表示したいと思います。

現在、私のショービューは次のようになっています。

 <% @scores.each do |score| %>
 <p>
   <b>Grade:</b>
    <%= score.grade %>
 </p>
 <p>
   <b>Date:</b>
    <%= score.fielded %>
 </p>
 <% end %>

私のStudentsコントローラーは次のようになります。

def show
  @student = Student.find(params[:id])
  @scores = @student.scores
  respond_to do |format|
    format.html # show.html.erb
    format.json { render json: @student }
  end
end

スコアデータベースには次のものが含まれています。

class CreateScores < ActiveRecord::Migration
   def change
     create_table :scores do |t|
       t.string :student   
       t.integer :score
       t.date :fielded
       t.string :grade
       t.integer :student_id

       t.timestamps
     end
   end
end

現在、私が持っているコードは、その学生に関連するすべての成績と日付を示しています。ビューコードを変更しようとすると

@scores.each do |score|

@scores.order('fielded DESC') do |score| 

結果は出ません。これだけでは問題が解決しないことはわかっていますが、なぜこれが機能しないのかわかりません。最終的には、最新の値のみを表示したいと思います。私はRailsの経験があまりないので、コードを進めたり変更したりする方法についての提案をいただければ幸いです。

4

1 に答える 1

0

試す

@scores.order('fielded DESC').each do |score|

メソッドは、コレクションeach内の各アイテムにコード ブロック (内部 do) を生成できるようにするものです。@scoresこのorder句はコレクションの結果を変更しますが、それ自体はブロックに譲り渡されません。

于 2013-03-13T03:59:44.577 に答える