我的网站的成员与其个人资料具有has_one关系。
我想在我创建的管理信息中心中显示一些会员资料信息。
在rails控制台中,我可以使用以下方式访问信息:
member = Member.find(1)
member.profile.first_name
在我的控制器中
def index
@members = Member.all
end
在我的管理视图中,我有
<% @members.each do |member| %>
<p><%= member.id %></p>
<p><%= member.profile.first_name %></p>
<% end %>
除了这会引发未定义的方法错误
undefined method `first_name' for nil:NilClass
如何在我的视图中访问个人资料信息?
答案 0 :(得分:4)
我认为您的某些成员没有与之关联的个人资料。为防止错误,您可以执行以下操作:
<% @members.each do |member| %>
<p><%= member.id %></p>
<p><%= member.profile ? member.profile.first_name : "-" %></p>
<% end %>
更新:
最好在控制器本身中包含profile
,以防止N + 1查询问题。您可以在控制器中执行此操作:
def index
@members = Member.includes(:profile)
end