我有一个包含学生,成绩等列的表格和一个相应日期的列(不是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并不是那么有经验,所以对于如何前进或更改我的代码的任何建议都将不胜感激!
答案 0 :(得分:0)
尝试
@scores.order('fielded DESC').each do |score|
each
方法允许您为@scores
集合中的每个项目生成代码块(内部)。 order
子句修改了集合的结果,但本身不会产生块。