仅显示基于日期列的最新记录

时间:2013-03-13 03:39:26

标签: ruby-on-rails date show

我有一个包含学生,成绩等列的表格和一个相应日期的列(不是created_at日期)。在我的模型中,学生有很多分数,分数属于学生。当用户点击学生时,我希望显示页面仅显示最近的成绩和相关日期,具体取决于在“fielding”列中输入的日期。

目前我的节目视图如下所示:

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

我的学生控制器看起来像这样:

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并不是那么有经验,所以对于如何前进或更改我的代码的任何建议都将不胜感激!

1 个答案:

答案 0 :(得分:0)

尝试

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

each方法允许您为@scores集合中的每个项目生成代码块(内部)。 order子句修改了集合的结果,但本身不会产生块。