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 的经验并不多,因此对于如何推进或更改我的代码的任何建议将不胜感激!

4

1 回答 1

0

尝试

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

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

于 2013-03-13T03:59:44.577 回答