我的注册和参赛者模型之间有一个相当简单的关联。
class Contestant < ActiveRecord::Base
has_many :registrations
end
class Registration < ActiveRecord::Base
belongs_to :contestant
end
我试图从我的注册索引页面引用参赛者的名字。
<tbody>
<% @registrations.each do |registration| %>
<tr>
<td><%= registration.contestant.FirstName%></td>
</tr>
<% end %>
</tbody>
访问页面产生
ActionView::Template::Error (undefined method `FirstName' for nil:NilClass):
我正在使用activerecord 4.2.6(Rails 4.2.6)运行Ruby-2.3.3-p222。我也尝试过ruby-2.2.4-p230并得到相同的结果。扭曲是我的用户和角色之间有类似的关联。我可以毫无问题地拨打电话<%= user.role.name %>
。我已经在两者之间反映了我的逻辑,并且不知道为什么。谢谢大家的见解。
答案 0 :(得分:3)
此处的问题是(99%)并非所有@registrations
都关联contestant
,因此您收到了错误。
两个选项:
1)仅显示@registrations
与关联的contestants
:
@registrations.joins(:contestant).each...
2)使用try
来避免错误:
registration.contestant.try(:FirstName)