问题访问关系数据在视图中 - Rails 3

时间:2011-06-12 12:52:56

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

我的网站的成员与其个人资料具有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

如何在我的视图中访问个人资料信息?

1 个答案:

答案 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