Ruby on Rails-为什么我的所有课程平均成绩都没有显示?

时间:2018-10-16 16:45:00

标签: ruby-on-rails

留在这里的学生-想知道您是否可以看一下这段代码,并给我一些指导,为什么不显示其余2门课程的平均水平?该代码正在运行-每个控制台。

是否弹出任何东西?

请让我知道。

欢迎您!
<% if current_student.courses.present? %>

  <h5>Here are your courses:</h5>
  <table>
    <tbody>
      <tr>
      <td width="150"><h5>Course Name</h5></td>
      <td width="150"><h5>Course Average</h5></td>
      <td width="300"><h5>Course Actions</h5></td>
      </tr>
      <tr>
      <% current_student.courses.select(:course_name, :id).where(student_id: current_student.id).each do |course| %>
      <td width="150"><h6> <%= link_to "#{course.course_name}", student_path(current_student, course) %></h6></td>
      <td width="150"><h6> <%= "#{Assignment.where(course_id: course.id, student_id: current_student.id).average(:assignment_grade)}" %></h6></td>
      <td width="150"><h6> <%= link_to "See assignments for this course." %> </h6></td>
     </tr>
      <% end %>
    </tbody>
    </table>

 <% else %>
 <h5>You currently do not have any Courses.</h5>
<% end %>

Pic of console Pic of page

更新:谢谢您的反馈,我能够显示一些数字,但是平均值是总作业数。似乎没有将作业的课程ID限制为课程ID?有什么想法吗?

      <% current_student.courses.select(:course_name).each do |course| %>
        <tr>
        <td width="150"><h6> <%= link_to "#{course.course_name}", student_path(current_student, course) %></h6></td>
        <td width="150"><h6> <%= "#{Assignment.joins(:course).where(student_id: current_student, course_id: course.id).average(:assignment_grade)}" %></h6></td>
        <td width="150"><h6> <%= "#{Assignment.joins(:course).where(student_id: current_student, course_id: 1).count}" %></h6></td>
        <td width="150"><h6> <%= link_to "See assignments for this course." %> </h6></td>
        </tr>
        <% end %>

当然,如果我对课程ID进行硬编码,则会显示平均值,但是我需要为每个操作输入课程编号... enter image description here

1 个答案:

答案 0 :(得分:0)

如果Assignment.where(course_id: course.id, student_id: current_student.id)不返回任何行,则averagenil。插入为字符串的Nil可为您提供空字符串。

更新:

这里是UPDATE的部分正确版本:

<% current_student.courses.each do |course| %>
  <tr>
    <td width="150"><h6><%= link_to "#{course.course_name}", student_path(current_student.id, course.id) %></h6></td>
    <td width="150"><h6><%= Assignment.where(student_id: current_student.id, course_id: course.id).average(:assignment_grade) %></h6></td>
    <td width="150"><h6><%= link_to "See assignments for this course." %></h6></td>
  </tr>
<% end %>