我有这些模型
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"
任何人都可以帮助我吗?
答案 0 :(得分:0)
对于您的所有评估栏,将获得教师,然后显示它的名称。如果只有一个评估没有教师,那么教师将获得一个评分,然后尝试获取该名称,然后就会出现错误。
试试这个:
<td><% if evaluation.teacher %>
<%= evaluation.teacher.name %>
<% end %></td>