Rails模型关系存在疑虑

时间:2013-06-22 20:33:42

标签: ruby-on-rails ruby-on-rails-3 models relation

我有这些模型

class Course < ActiveRecord::Base  
  attr_accessible :name 
  has_many :teachers
end

class Teacher < ActiveRecord::Base
  attr_accessible :id, :name, :course_id
  belongs_to :course
  has_many   :evaluations
end

class Evaluation < ActiveRecord::Base
  attr_accessible  :teacher_id, :course_id
  belongs_to       :teacher
end

这是views / evaluations / index.html.erb文件

<% @evaluations.each do |evaluation| %>
  <tr>
   <td><%= evaluation.teacher_id %></td>  
   <td><%= link_to 'Show', evaluation %></td>
   <td><%= link_to 'Edit', edit_evaluation_path(evaluation) %></td>
   <td><%= link_to 'Destroy', evaluation, :method => :delete, :data => { :confirm =>      'Are you sure?' } %></td>
  </tr>
 <% end %>

我想用以下方式显示教师姓名:

<td><%= evaluation.teacher.name %></td> 

但它不起作用.Rails显示此错误:

 "undefined method `name' for nil:NilClass"

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

对于您的所有评估栏,将获得教师,然后显示它的名称。如果只有一个评估没有教师,那么教师将获得一个评分,然后尝试获取该名称,然后就会出现错误。

试试这个:

<td><% if evaluation.teacher %>
  <%= evaluation.teacher.name %>
<% end %></td>