2013-03-13 4 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.order('fielded DESC') do |score| 

에보기 코드

@scores.each do |score| 

을 변경하려고하면 그것은 나에게 어떤 결과를 제공하지 않습니다. 이 문제만으로는 문제를 해결할 수는 없지만 왜 이것이 작동하지 않는 것인지 잘 모르겠습니다. 궁극적으로 가장 최근의 가치만을 보여주고 싶습니다. 나는 레일즈에서 경험 한 모든 것이 아니므로 앞으로 나아가거나 코드를 바꿀 수있는 방법에 대한 제안은 대단히 감사하겠습니다!

답변

0

each 방법을 사용하여 @scores 컬렉션의 각 항목 (내부 수행) 코드 블록을 생성 할 수 있습니다 무엇

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

을보십시오. order 절은 모음의 결과를 수정하지만 그 자체로는 블록을 생성하지 않습니다.

+0

그 덕분에 - 감사합니다! 그 순서가 지정된 목록에서 가장 최근의 것을 만드는 방법을 아는 모든 기회가보기에 나타납니다. – user2155400

+0

'@scores.order (...). limit (1)'은 그것을 수행하는 한 가지 방법입니다. 이 모든 것 이상은 잘 문서화되어 있습니다. Rails 가이드를 확인하십시오. http://guides.rubyonrails.org/active_record_querying.html – rossta

+0

그 덕분에 정말 감사드립니다! 나는 가이드를 통해 확실히 볼 것입니다 - 처음부터 살펴 보지 못한 것에 대해 사과드립니다! – user2155400

관련 문제