0

私はこれらのモデルを持っています

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"

誰でも私を助けることができますか?

4

1 に答える 1

0

すべての評価レールで教師が取得され、その名前が表示されます。1 つの評価だけに教師がいない場合、その教師に対して nul が取得され、その nil で名前を取得しようとすると、エラーが発生します。

これを試して :

<td><% if evaluation.teacher %>
  <%= evaluation.teacher.name %>
<% end %></td>
于 2013-06-22T20:38:20.650 に答える