2013-03-13 105 views
0

我有一张表,其中包含学生,成绩等栏目和相应日期栏目(不是created_at日期)。在我的模特中,一名学生拥有多个分数,一个分数属于一名学生。当用户点击学生时,我希望演示页面仅显示最近的成绩和相关日期,具体情况取决于“已完成”列中输入的日期。仅显示基于日期列的最新记录

目前我秀看法是这样的:

<% @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,所以对于如何前进或更改我的代码的任何建议将不胜感激!

回答

0

尝试

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

each方法是什么让你得到你的代码块(内做),以每个项目@scores收藏。 order子句修改了集合的结果,但本身并不屈服于该块。

+0

工作 - 谢谢!你知道如何仅仅从有序列表中做出最新的列表吗? – user2155400 2013-03-13 04:04:42

+0

'@ scores.order(...)。limit(1)'是做到这一点的一种方法。所有这些以及更多都是有据可查的。查看Rails指南:http://guides.rubyonrails.org/active_record_querying.html – rossta 2013-03-13 04:07:59

+0

那也行得通,非常感谢!我一定会浏览指南 - 道歉不首先看! – user2155400 2013-03-13 04:11:40